Package: minicom Version: 2.2-5 Severity: important Tags: patch, upstream Hello,
When I ask to upload a file a dialog listing the files is displayed. Some files are missing from the listing. I found the bug. minicom assumes that '.' and '..' files are the first and second answers from readdir(). This is not correct for every filesystem but generaly is. I guess ext3 has some optimisations and then reorder the entries. With the simple test program bellow: #include <stdio.h> #include <sys/types.h> #include <dirent.h> int main(int argc, char *argv[]) { DIR *d; struct dirent *s; d = opendir(argv[1]); if (NULL == d) return 0; while ((s = readdir(d)) != NULL) printf("%s\n", s->d_name); closedir(d); } I have: ccidusbout7.hex usbsnoop.log ccidusbout-20070313.hex ccidusblnux-20070307.hex ccidusbout4.hex ccidusbout5.hex USBDrivers.zip . Demo4.zip ccidusbout-20070314.hex floppy programmer.sh .. ccidusbout-20070316.hex ccidusbout6.hex usbsnoop.txt Note that the first entry is ccidusbout7.hex and this is exactly the file I want to select but I can't see it from minicom selection dialog. The patch is simple: diff -ru minicom-2.2/src/getsdir.c minicom-2.2.new/src/getsdir.c --- minicom-2.2/src/getsdir.c 2007-03-24 15:13:36.000000000 +0100 +++ minicom-2.2.new/src/getsdir.c 2007-03-24 15:09:24.000000000 +0100 @@ -151,15 +151,6 @@ if ((dirp = opendir(dirpath)) == NULL) return -1; - /* discard current, and possibly parent, dir entries */ - if (readdir(dirp) == NULL || - (!(sortflags & GETSDIR_PARNT) && readdir(dirp) == NULL)) { - fprintf(stderr, _("DBUG: initial readdir() failed (errno == %d)\n"), - errno); - perror("readdir"); - fflush(stderr); - } - for(cnt = 1;; ++cnt) { /* for buffer count 1 to whatever... */ datb_sav = datb_cur; /* save pointer to previous buffer */ @@ -180,6 +171,8 @@ /* while the current buffer is not full, get directory entries */ for (datb_cur->cnt = 0; datb_cur->cnt < MAX_CNT;) if ((dp = readdir(dirp)) != NULL) {/* get next directory entry */ + if (strcmp(dp->d_name, ".") == 0) + continue; if ((sortflags & GETSDIR_PARNT) && strcmp(dp->d_name, "..") == 0) cmprstat = 1; else if (pattern && strlen(pattern)) -- System Information: Debian Release: 4.0 APT prefers testing APT policy: (500, 'testing'), (90, 'unstable'), (1, 'experimental') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-4-686 Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Versions of packages minicom depends on: ii libc6 2.3.6.ds1-13 GNU C Library: Shared libraries ii libncurses5 5.5-5 Shared libraries for terminal hand Versions of packages minicom recommends: pn lrzsz <none> (no description available) -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]