home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!island!argv
- From: argv@island.uu.net (Dan Heller)
- Newsgroups: comp.sources.x
- Subject: v05i014: xdir, Patch1
- Message-ID: <1159@island.uu.net>
- Date: 6 Nov 89 18:08:57 GMT
- Organization: Island Graphics, Marin County, California
- Lines: 300
- Approved: island!argv@sun.com
-
- Submitted-by: Erik M. van der Poel <erik@sran8.sra.co.jp>
- Posting-number: Volume 5, Issue 14
- Archive-name: xdir/patch1
- Patch-To: xdir: Volume 4, Issue 14-15,97
-
-
- This is the second set of patches for the SelFile directory browser
- package (otherwise known as xdir).
-
- * There was a division by zero when there were no entries in the
- directory. This bug has been fixed. Many thanks to Andrew
- Tannenbaum for reporting this bug.
-
- * XtNinput is now set to True to allow keyboard input with
- ICCCM-compliant window managers. Thanks to Chris Kent for this
- bug report.
-
- * SelFile now tries lstat if stat fails and the system has
- symbolic links.
-
- * The root directory listing is now updated properly when
- show_entry is used to filter filenames.
-
- * The patchlevel.h file has been updated to patch level two.
-
- --
- Erik M. van der Poel erik@sra.co.jp (Japan)
- SRA, 1-1-1 Hirakawa-cho, Chiyoda-ku erik%sra.co.jp@uunet.uu.net (USA)
- Tokyo 102 Japan. TEL +81-3-234-2692 erik%sra.co.jp@mcvax.uucp (Europe)
-
-
- Prereq: 1
- *** ../old/patchlevel.h Tue Oct 31 14:04:11 1989
- --- patchlevel.h Thu Sep 28 16:41:11 1989
- ***************
- *** 1 ****
- ! #define PATCHLEVEL 1
- --- 1 ----
- ! #define PATCHLEVEL 2
- *** ../old/SelFile.c Tue Oct 31 14:04:09 1989
- --- SelFile.c Fri Oct 27 15:41:41 1989
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char rcsid[] = "$Header: SelFile.c,v 1.12 89/08/30 16:00:17 erik Exp $";
- #endif
-
- /*
- --- 1,5 ----
- #ifndef lint
- ! static char rcsid[] = "$Header: SelFile.c,v 1.13 89/10/27 15:41:26 erik Exp $";
- #endif
-
- /*
- ***************
- *** 349,354 ****
- --- 349,355 ----
-
- i = 0;
- XtSetArg(arglist[i], XtNallowShellResize, True); i++;
- + XtSetArg(arglist[i], XtNinput, True); i++;
-
- #ifdef SEL_FILE_R2_XT
-
- *** ../old/Dir.c Tue Oct 31 14:04:02 1989
- --- Dir.c Thu Sep 28 16:31:52 1989
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char rcsid[] = "$Header: Dir.c,v 1.4 89/08/30 15:56:15 erik Exp $";
- #endif
-
- /*
- --- 1,5 ----
- #ifndef lint
- ! static char rcsid[] = "$Header: Dir.c,v 1.6 89/09/28 16:31:23 erik Exp $";
- #endif
-
- /*
- *** ../old/Draw.c Tue Oct 31 14:04:04 1989
- --- Draw.c Thu Sep 28 16:33:52 1989
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char rcsid[] = "$Header: Draw.c,v 1.10 89/08/30 15:58:01 erik Exp $";
- #endif
-
- /*
- --- 1,5 ----
- #ifndef lint
- ! static char rcsid[] = "$Header: Draw.c,v 1.11 89/09/28 16:32:19 erik Exp $";
- #endif
-
- /*
- ***************
- *** 189,195 ****
-
- #if defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR)
- i = 0;
- ! if (SFdirPtr + n < SFdirEnd) {
- XtSetArg(arglist[i], XtNsliderMax, dir->nEntries);
- i++;
- XtSetArg(arglist[i], XtNsliderExtent,
- --- 189,195 ----
-
- #if defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR)
- i = 0;
- ! if ((SFdirPtr + n < SFdirEnd) && dir->nEntries) {
- XtSetArg(arglist[i], XtNsliderMax, dir->nEntries);
- i++;
- XtSetArg(arglist[i], XtNsliderExtent,
- ***************
- *** 206,212 ****
- XtSetValues(selFileVScrolls[n], arglist, i);
-
- i = 0;
- ! if (SFdirPtr + n < SFdirEnd) {
- XtSetArg(arglist[i], XtNsliderMax, dir->nChars);i++;
- XtSetArg(arglist[i], XtNsliderExtent,
- dir->nChars < SFcharsPerEntry ? dir->nChars :
- --- 206,212 ----
- XtSetValues(selFileVScrolls[n], arglist, i);
-
- i = 0;
- ! if ((SFdirPtr + n < SFdirEnd) && dir->nChars) {
- XtSetArg(arglist[i], XtNsliderMax, dir->nChars);i++;
- XtSetArg(arglist[i], XtNsliderExtent,
- dir->nChars < SFcharsPerEntry ? dir->nChars :
- ***************
- *** 222,228 ****
- }
- XtSetValues(selFileHScrolls[n], arglist, i);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! if (SFdirPtr + n < SFdirEnd) {
- XtScrollBarSetThumb(
- selFileVScrolls[n],
- (float) (((double) dir->vOrigin) /
- --- 222,228 ----
- }
- XtSetValues(selFileHScrolls[n], arglist, i);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! if ((SFdirPtr + n < SFdirEnd) && dir->nEntries && dir->nChars) {
- XtScrollBarSetThumb(
- selFileVScrolls[n],
- (float) (((double) dir->vOrigin) /
- ***************
- *** 290,296 ****
- *e = *(e + 1);
- }
-
- ! dir->nEntries--;
-
- n = dir - &(SFdirs[SFdirPtr]);
- if ((n < 0) || (n > 2)) {
- --- 290,298 ----
- *e = *(e + 1);
- }
-
- ! if (!(--dir->nEntries)) {
- ! return;
- ! }
-
- n = dir - &(SFdirs[SFdirPtr]);
- if ((n < 0) || (n > 2)) {
- ***************
- *** 368,374 ****
- last = strlen(entry->real) - 1;
- entry->real[last] = 0;
- entry->statDone = 1;
- ! if (!stat(entry->real, &statBuf)) {
- if (SFfunc) {
- char *shown;
-
- --- 370,385 ----
- last = strlen(entry->real) - 1;
- entry->real[last] = 0;
- entry->statDone = 1;
- ! if (
- ! (!stat(entry->real, &statBuf))
- !
- ! #ifdef S_IFLNK
- !
- ! || (!lstat(entry->real, &statBuf))
- !
- ! #endif /* ndef S_IFLNK */
- !
- ! ) {
- if (SFfunc) {
- char *shown;
-
- ***************
- *** 598,609 ****
- XtSetArg(arglist[i], XtNsliderOrigin, dir->vOrigin); i++;
- XtSetValues(selFileVScrolls[n], arglist, i);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! XtScrollBarSetThumb(
- selFileVScrolls[n],
- (float) (((double) dir->vOrigin) / dir->nEntries),
- (float) (((double) ((dir->nEntries < SFlistSize) ?
- dir->nEntries : SFlistSize)) / dir->nEntries)
- ! );
- #endif /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
-
- }
- --- 609,622 ----
- XtSetArg(arglist[i], XtNsliderOrigin, dir->vOrigin); i++;
- XtSetValues(selFileVScrolls[n], arglist, i);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! if (dir->nEntries) {
- ! XtScrollBarSetThumb(
- selFileVScrolls[n],
- (float) (((double) dir->vOrigin) / dir->nEntries),
- (float) (((double) ((dir->nEntries < SFlistSize) ?
- dir->nEntries : SFlistSize)) / dir->nEntries)
- ! );
- ! }
- #endif /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
-
- }
- ***************
- *** 887,893 ****
- XtSetArg(arglist[i], XtNsliderOrigin, new); i++;
- XtSetValues(w, arglist, i);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! {
- float f;
-
- f = ((double) new) / dir->nEntries;
- --- 900,906 ----
- XtSetArg(arglist[i], XtNsliderOrigin, new); i++;
- XtSetValues(w, arglist, i);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! if (dir->nEntries) {
- float f;
-
- f = ((double) new) / dir->nEntries;
- ***************
- *** 983,989 ****
-
- SFhSliderMovedCallback(w, n, new);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! {
- float f;
-
- f = ((double) new) / dir->nChars;
- --- 996,1002 ----
-
- SFhSliderMovedCallback(w, n, new);
- #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
- ! if (dir->nChars) {
- float f;
-
- f = ((double) new) / dir->nChars;
- ***************
- *** 1131,1136 ****
- --- 1144,1152 ----
- register SFEntry *entry;
-
- for (dir = &(SFdirs[SFdirEnd - 1]); dir >= SFdirs; dir--) {
- + if (!(dir->nEntries)) {
- + continue;
- + }
- for (
- entry = &(dir->entries[dir->nEntries - 1]);
- entry >= dir->entries;
- *** ../old/Path.c Tue Oct 31 14:04:07 1989
- --- Path.c Thu Sep 28 16:35:23 1989
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char rcsid[] = "$Header: Path.c,v 1.9 89/08/30 15:58:47 erik Exp $";
- #endif
-
- /*
- --- 1,5 ----
- #ifndef lint
- ! static char rcsid[] = "$Header: Path.c,v 1.10 89/09/28 16:33:57 erik Exp $";
- #endif
-
- /*
- ***************
- *** 538,544 ****
- dir->changed = 1;
- dir->beginSelection = -1;
- dir->endSelection = -1;
- - SFrootDir = *dir;
- SFgetHomeDirs();
- }
-
- --- 538,543 ----
- ***************
- *** 554,559 ****
- --- 553,559 ----
- if (!SFtwiddle) {
- SFtwiddle = 1;
- dir = &(SFdirs[0]);
- + SFrootDir = *dir;
- *dir = SFhomeDir;
- dir->changed = 1;
- }
-