Index: src/tools/qfileinfo_unix.cpp =================================================================== --- src/tools/qfileinfo_unix.cpp (revision 526314) +++ src/tools/qfileinfo_unix.cpp (working copy) @@ -45,6 +45,9 @@ #if !defined(QWS) && defined(Q_OS_MAC) # include #endif +#if defined(Q_OS_HURD) +# include +#endif void QFileInfo::slashify( QString& ) { @@ -124,16 +127,41 @@ QString QFileInfo::readLink() const { + if ( !isSymLink() ) + return QString(); #if defined(Q_OS_UNIX) && !defined(Q_OS_OS2EMX) +#if defined(Q_OS_HURD) +#define PATH_CHUNK_SIZE 100 + int size = PATH_CHUNK_SIZE; + char *s = NULL; + + while (1) + { + s = (char *) realloc (s, size); + if (s == NULL) + return QString(); + int len = readlink ( QFile::encodeName(fn).data(), s, size ); + if ( len < 0 ) { + free( s ); + return QString(); + } + if ( len < size ) { + s[len] = '\0'; + QString str = QFile::decodeName(s); + free(s); + return str; + } + size *= 2; + } +#else char s[PATH_MAX+1]; - if ( !isSymLink() ) - return QString(); int len = readlink( QFile::encodeName(fn).data(), s, PATH_MAX ); if ( len >= 0 ) { s[len] = '\0'; return QFile::decodeName(s); } -#endif +#endif /* Q_OS_HURD */ +#endif /* Q_OS_UNIX && !Q_OS_OS2EMX */ #if !defined(QWS) && defined(Q_OS_MAC) { FSRef fref; Index: src/tools/qglobal.h =================================================================== --- src/tools/qglobal.h (revision 526314) +++ src/tools/qglobal.h (working copy) @@ -134,7 +134,7 @@ # define Q_OS_AIX #elif defined(__Lynx__) # define Q_OS_LYNX -#elif defined(__GNU_HURD__) +#elif defined(__GNU__) # define Q_OS_HURD #elif defined(__DGUX__) # define Q_OS_DGUX Index: src/tools/qdir_unix.cpp =================================================================== --- src/tools/qdir_unix.cpp (revision 526314) +++ src/tools/qdir_unix.cpp (working copy) @@ -71,6 +71,20 @@ QString QDir::canonicalPath() const { QString r; +#if defined(Q_OS_HURD) + char *cur = get_current_dir_name(); + if ( cur ) { + char *tmp = canonicalize_file_name( QFile::encodeName( dPath ).data() ); + if ( tmp ) { + r = QFile::decodeName( tmp ); + free( tmp ); + } + slashify( r ); + // always make sure we go back to the current dir + ::chdir( cur ); + free( cur ); + } +#else char cur[PATH_MAX+1]; if ( ::getcwd( cur, PATH_MAX ) ) { char tmp[PATH_MAX+1]; @@ -83,6 +97,7 @@ // always make sure we go back to the current dir ::chdir( cur ); } +#endif /* Q_OS_HURD */ return r; } @@ -144,9 +159,17 @@ struct stat st; if ( ::stat( ".", &st ) == 0 ) { +#if defined(Q_OS_HURD) + char *currentName = get_current_dir_name(); + if ( currentName ) { + result = QFile::decodeName(currentName); + free( currentName ); + } +#else char currentName[PATH_MAX+1]; if ( ::getcwd( currentName, PATH_MAX ) ) result = QFile::decodeName(currentName); +#endif /* Q_OS_HURD */ #if defined(QT_DEBUG) if ( result.isNull() ) qWarning( "QDir::currentDirPath: getcwd() failed" ); Index: mkspecs/hurd-g++/qmake.conf =================================================================== --- mkspecs/hurd-g++/qmake.conf (revision 526314) +++ mkspecs/hurd-g++/qmake.conf (working copy) @@ -16,7 +16,7 @@ QMAKE_LEXFLAGS = QMAKE_YACC = yacc QMAKE_YACCFLAGS = -d -QMAKE_CFLAGS = +QMAKE_CFLAGS = -pipe QMAKE_CFLAGS_DEPS = -M QMAKE_CFLAGS_WARN_ON = -Wall -W QMAKE_CFLAGS_WARN_OFF = -w @@ -24,6 +24,7 @@ QMAKE_CFLAGS_DEBUG = -g QMAKE_CFLAGS_SHLIB = -fPIC QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_THREAD = -D_REENTRANT QMAKE_CXX = g++ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS @@ -34,6 +35,7 @@ QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD QMAKE_INCDIR = QMAKE_LIBDIR = @@ -52,14 +54,18 @@ QMAKE_LFLAGS_SHLIB = -shared QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB QMAKE_LFLAGS_SONAME = -Wl,-soname, +QMAKE_LFLAGS_THREAD = QMAKE_LIBS = QMAKE_LIBS_DYNLOAD = -ldl QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_X11SM = -lSM -lICE +QMAKE_LIBS_NIS = -lnsl QMAKE_LIBS_QT = -lqt - +QMAKE_LIBS_QT_THREAD = -lqt-mt QMAKE_LIBS_OPENGL = -lGLU -lGL -lXmu QMAKE_LIBS_OPENGL_QT = -lGL -lXmu +QMAKE_LIBS_THREAD = -lpthread QMAKE_MOC = $(QTDIR)/bin/moc QMAKE_UIC = $(QTDIR)/bin/uic