--- gtkfind.old.c	Mon Sep 17 21:08:49 2001
+++ gtkfind.c	Mon Sep 17 22:15:31 2001
@@ -98,8 +98,11 @@
   gchar *search_directory = NULL;
   GdkCursor *watch_cursor = NULL;
   GdkCursor *normal_cursor = NULL;
+#ifdef __GLIBC__
+  char *cwd;
+#else
   char cwd[MAXPATHLEN];
-
+#endif
 
 
   text = gtk_entry_get_text(GTK_ENTRY(pattern));
@@ -135,8 +138,13 @@
   gtk_widget_show(stop_button);
   gdk_window_set_cursor(stop_button->window, normal_cursor);
 
+#ifdef __GLIBC__
+  cwd = get_current_dir_name();
+#else
+  getcwd(cwd,MAXPATHLEN);
+#endif
 
-  if(getcwd(cwd, MAXPATHLEN) == NULL) {
+  if( cwd == NULL ) {
     print_error("getcwd: %s", strerror(errno));
     goto DONE;
   }
@@ -173,7 +181,7 @@
   DIR *dp = NULL;
   struct dirent *dirent = NULL;
   struct stat sbuf;
-  char full_file_name[MAXPATHLEN];
+  char *full_file_name;
   char **registers = NULL;
 
 #ifdef DEBUG
@@ -204,6 +212,12 @@
     if(dirent->d_ino != 0) { /* file has not been deleted */
 
       /* avoid having those "//" in file names */
+      full_file_name = malloc(strlen(dir_name) + strlen(dirent->d_name) + 2);
+      if ( full_file_name == 0 ) {
+	fprintf(stderr,"find_and_print: Memory Error %s\n",strerror(errno));
+	exit(1);
+      }
+      
       if(dir_name[strlen(dir_name) - 1] == '/')
 	sprintf(full_file_name, "%s%s", dir_name, dirent->d_name);
       else
@@ -247,6 +261,9 @@
   if(dp) {
     closedir(dp);
   }
+
+  free(full_file_name);
+  
   if(registers)
     free_glob_registers(registers);
   return;
@@ -354,10 +371,12 @@
 	has a ~  or a . expand it */
 {
   char *rv = NULL;
-  char tmp[MAXPATHLEN + 1];
-
-  strncpy(tmp, gtk_entry_get_text(GTK_ENTRY(directory)), MAXPATHLEN);
+  char *tmp = gtk_entry_get_text(GTK_ENTRY(directory));
+  
+  /*
+  strncpy(tmp, , MAXPATHLEN);
   tmp[MAXPATHLEN] = '\0';
+  */
 
   if(strlen(tmp) == 0) {
     rv = (char *)g_malloc(2);
@@ -860,7 +879,11 @@
   char *s = NULL;
   int rv = 0;
   int i = 0;
+#ifdef MAXPATHLEN
   char buffer[MAXPATHLEN];
+#else
+  char *buffer;
+#endif
   int size = 0;
   struct stat symlink;
 
@@ -868,11 +891,41 @@
   /* if we are dealing with a symbolic link we must make sure that it
      points to a regular file */
   if((sbuf.st_mode & S_IFMT) == S_IFLNK) {
+#ifdef MAXPATHLEN
     size = readlink(full_file_name, buffer, MAXPATHLEN);
+      
     if(!size) {
       print_error("match_contents: Can't readlink on %s", full_file_name);
       goto ERROR;
     }
+#else
+    {
+      int Lsize = 512;
+      size = 512;
+      
+      buffer = (char*)malloc(Lsize);
+      if ( buffer == NULL ) {
+	print_error("match_contents: %s\n",strerror(errno));
+      }
+      
+      while ( size >= Lsize ) {
+	Lsize *= 2;
+	buffer = realloc(buffer,Lsize);
+	if ( buffer == NULL ) {
+	  print_error("match_contents: %s\n",strerror(errno));
+	  goto ERROR;
+	  
+	}
+	
+	size = readlink(full_file_name,buffer,Lsize);
+	if ( size < 0 ) {
+	  print_error("match_contents: Can't readlink on %s",full_file_name);
+	  goto ERROR;
+	}
+      }
+    }
+#endif    
+      
     buffer[size] = '\0'; /* filename not guaranteed to be NUL terminated */
     stat(buffer, &symlink);
     if((symlink.st_mode & S_IFMT) != S_IFREG)
@@ -971,7 +1024,11 @@
   time_t diff = 0;
   unsigned short mode = 0;
   char c = 0;
+#ifdef MAXPATHLEN
   char tmp[MAXPATHLEN];
+#else
+  char *tmp;
+#endif
   int i = 0;
 
   s = (char *)g_malloc0(base_length * sizeof(char) +
@@ -1136,10 +1193,37 @@
 
   /* if it's a symlink, add the -> and the name of the file it points too */
   if(mode == S_IFLNK) {
-    if((i = readlink(full_file_name, tmp, MAXPATHLEN)) < 0) {
-      print_error("readlink: %s", strerror(errno));
-      print_error("readlink failed on %s", full_file_name);
+#ifdef MAXPATHLEN
+    i = readlink(full_file_name, tmp, MAXPATHLEN);
+    
+#else
+    int Lsize = 512;
+    i = 512;
+    
+    tmp = (char*)malloc(Lsize);
+    if ( tmp == NULL ) {
+      print_error("gtkfind: %s",strerror(errno));
+      
     }
+    
+    while (i >= Lsize ) {
+      Lsize *=2;
+      
+      tmp = realloc(tmp,Lsize);
+      if ( tmp == NULL ) {
+	print_error("gtkfind: %s",strerror(errno));
+      }
+      i = readlink(full_file_name,tmp,Lsize);
+      
+#endif
+      if ( i < 0 ) {
+	 
+	print_error("readlink: %s", strerror(errno));
+	print_error("readlink failed on %s", full_file_name);
+      }
+#ifndef MAXPATHLEN
+  }
+#endif
     tmp[i] = '\0';
     s = (char *)g_realloc(s, strlen(s) + strlen(" -> ") + i + 1);
     sprintf(s + offset, " -> %s", tmp);
--- util.old.c	Mon Sep 17 21:08:55 2001
+++ util.c	Mon Sep 17 22:19:41 2001
@@ -29,16 +29,25 @@
 {
   char *rv = NULL;
   char *offset = NULL;
+#ifdef __GLIBC__
+  char *tmp;
+#else
   char tmp[MAXPATHLEN];
+#endif
 
   if(path[0] != '/' && path[0] != '~') {
-    rv = (char *)malloc(sizeof(char) * MAXPATHLEN);
-    if(!rv) {
+
+#ifdef __GLIBC__
+    tmp = get_current_dir_name();
+#else
+    getcwd(tmp,MAXPATHLEN);
+#endif
+    if(!tmp) {
+      print_error("getcwd: %s\n", strerror(errno));
       goto ERROR;
     }
-    
-    if(!getcwd(tmp, MAXPATHLEN)) {
-      print_error("getcwd: %s\n", strerror(errno));
+    rv = (char *)malloc(strlen(tmp)+1);
+    if(!rv) {
       goto ERROR;
     }
     strncpy(rv, tmp, strlen(tmp));
