[devel] synaptic и g++ 3.2.1 строки и итераторы
Alexey Dyachenko
=?iso-8859-1?q?dyachenko_=CE=C1_fromru=2Ecom?=
Ср Сен 25 13:47:33 MSD 2002
Добрый день всем!
Мне тут понадобился работающий графический клиент для apt и я немного
похакал synaptic для сборки gcc 3.2.
Патч прилагается.
Вот только при этом получил я ОЧЕНЬ неприятную новость.
std::string::iterator != const char *
То есть в gcc 3.2 basic_string::iterator объявлен как
typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
В stlport это объявлеятся как
typedef const value_type* const_iterator;
typedef value_type* iterator;
и по моему здесь прав stlport.
Сейчас у меня с собой нет ни страуструпа, ни стандарта, так что точно
посмотреть не могу. Кто точно знает -- киньте пожалуйста кусок из
стандарта или просто скажите, кто из них прав.
Если прав stlport -- тогда срочно сяду собирать пакет для сизифа.
Хотя это надо бы сделать в любом случае -- вещь полезная.
С уважением, Алексей Дьяченко.
----------- следующая часть -----------
diff -Naur synaptic-0.16/common/i18n.h synaptic-0.16-gcc32/common/i18n.h
--- synaptic-0.16/common/i18n.h 2001-01-26 01:19:12 +0100
+++ synaptic-0.16-gcc32/common/i18n.h 2002-09-25 10:17:24 +0200
@@ -13,8 +13,8 @@
#else
/* Stubs that do something close enough. */
# define textdomain(String) (String)
-# define gettext(String) (String)
-# define dgettext(Domain,Message) (Message)
+//# define gettext(String) (String)
+//# define dgettext(Domain,Message) (Message)
# define dcgettext(Domain,Message,Type) (Message)
# define bindtextdomain(Domain,Directory) (Domain)
# define _(String) (String)
diff -Naur synaptic-0.16/common/indexcopy.cc synaptic-0.16-gcc32/common/indexcopy.cc
--- synaptic-0.16/common/indexcopy.cc 2001-08-15 21:44:09 +0200
+++ synaptic-0.16-gcc32/common/indexcopy.cc 2002-09-25 10:28:33 +0200
@@ -402,7 +402,7 @@
return;
// Not a dists type.
- if (stringcmp(Path.begin(),Path.begin()+strlen("dists/"),"dists/") != 0)
+ if (stringcmp( &( *Path.begin() ),&*( Path.begin()+strlen("dists/"),"dists/" ) ) != 0)
return;
// Isolate the dist
diff -Naur synaptic-0.16/common/indexcopy.h synaptic-0.16-gcc32/common/indexcopy.h
--- synaptic-0.16/common/indexcopy.h 2001-07-24 00:01:08 +0200
+++ synaptic-0.16-gcc32/common/indexcopy.h 2002-09-25 10:27:24 +0200
@@ -16,6 +16,9 @@
class pkgTagSection;
class FileFd;
+using std::string;
+using std::vector;
+
class IndexCopy
{
protected:
diff -Naur synaptic-0.16/common/rcdscanner.cc synaptic-0.16-gcc32/common/rcdscanner.cc
--- synaptic-0.16/common/rcdscanner.cc 2001-07-24 00:01:08 +0200
+++ synaptic-0.16-gcc32/common/rcdscanner.cc 2002-09-25 10:26:17 +0200
@@ -136,7 +136,7 @@
string File = _config->FindFile("Dir::Etc::sourcelist");
// Open the stream for reading
- ifstream F(File.c_str(),ios::in | ios::nocreate);
+ ifstream F(File.c_str(),ios::in );
if (!F != 0)
return _error->Errno("ifstream::ifstream","Opening %s",File.c_str());
diff -Naur synaptic-0.16/common/rconfiguration.h synaptic-0.16-gcc32/common/rconfiguration.h
--- synaptic-0.16/common/rconfiguration.h 2001-01-24 19:09:28 +0100
+++ synaptic-0.16-gcc32/common/rconfiguration.h 2002-09-25 10:30:38 +0200
@@ -11,7 +11,7 @@
bool RWriteConfigFile(Configuration &Conf);
-bool RInitConfiguration(string confFileName);
+bool RInitConfiguration(std::string confFileName);
bool RReadFilterData(Configuration &config);
bool RFilterDataOutFile(ofstream &out);
diff -Naur synaptic-0.16/common/rpackage.cc synaptic-0.16-gcc32/common/rpackage.cc
--- synaptic-0.16/common/rpackage.cc 2001-08-10 20:38:22 +0200
+++ synaptic-0.16-gcc32/common/rpackage.cc 2002-09-25 10:09:45 +0200
@@ -164,8 +164,10 @@
static char *parseDescription(string descr)
{
- const char *end;
- const char *p;
+// const char *end;
+// const char *p;
+ string::iterator end;
+ string::iterator p;
char *pp = (char*)descrBuffer;
int state = 0;
diff -Naur synaptic-0.16/common/rpackagelister.cc synaptic-0.16-gcc32/common/rpackagelister.cc
--- synaptic-0.16/common/rpackagelister.cc 2001-08-10 20:38:22 +0200
+++ synaptic-0.16-gcc32/common/rpackagelister.cc 2002-09-25 10:13:30 +0200
@@ -783,7 +783,7 @@
// Populate it with the source selection
for (I = List.begin(); I != List.end(); I++)
{
- new pkgAcqIndex(&Fetcher,I);
+ new pkgAcqIndex(&Fetcher,&(*I));
if (_error->PendingError() == true)
return false;
}
diff -Naur synaptic-0.16/wings/rwsummarywindow.cc synaptic-0.16-gcc32/wings/rwsummarywindow.cc
--- synaptic-0.16/wings/rwsummarywindow.cc 2001-08-10 20:38:22 +0200
+++ synaptic-0.16-gcc32/wings/rwsummarywindow.cc 2002-09-25 10:35:24 +0200
@@ -13,6 +13,8 @@
#include <WINGs/WINGs.h>
#include "rwsummarywindow.h"
+#include <iostream>
+
void RWSummaryWindow::handleKeyPress(XEvent *event, void *clientData)
@@ -255,7 +257,7 @@
lines++;
}
if (left <= 0) {
- cout << "BUFFER OVERFLOW DETECTED, ABORTING" << endl;
+ std::cout << "BUFFER OVERFLOW DETECTED, ABORTING" << std::endl;
abort();
}
diff -Naur synaptic-0.16/wings/rwwindow.h synaptic-0.16-gcc32/wings/rwwindow.h
--- synaptic-0.16/wings/rwwindow.h 2001-01-25 00:24:35 +0100
+++ synaptic-0.16-gcc32/wings/rwwindow.h 2002-09-25 10:32:43 +0200
@@ -7,6 +7,8 @@
#include <string>
+using std::string;
+
class RWWindow {
protected:
WMWindow *_win;
Подробная информация о списке рассылки Devel