home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume5 / xdir / patch1 next >
Encoding:
Text File  |  1989-11-06  |  8.0 KB  |  311 lines

  1. Path: uunet!island!argv
  2. From: argv@island.uu.net (Dan Heller)
  3. Newsgroups: comp.sources.x
  4. Subject: v05i014: xdir, Patch1
  5. Message-ID: <1159@island.uu.net>
  6. Date: 6 Nov 89 18:08:57 GMT
  7. Organization: Island Graphics, Marin County, California
  8. Lines: 300
  9. Approved: island!argv@sun.com
  10.  
  11. Submitted-by: Erik M. van der Poel <erik@sran8.sra.co.jp>
  12. Posting-number: Volume 5, Issue 14
  13. Archive-name: xdir/patch1
  14. Patch-To: xdir: Volume 4, Issue 14-15,97
  15.  
  16.  
  17. This is the second set of patches for the SelFile directory browser
  18. package (otherwise known as xdir).
  19.  
  20.     * There was a division by zero when there were no entries in the
  21.       directory. This bug has been fixed. Many thanks to Andrew
  22.       Tannenbaum for reporting this bug.
  23.  
  24.     * XtNinput is now set to True to allow keyboard input with
  25.       ICCCM-compliant window managers. Thanks to Chris Kent for this
  26.       bug report.
  27.  
  28.     * SelFile now tries lstat if stat fails and the system has
  29.       symbolic links.
  30.  
  31.     * The root directory listing is now updated properly when
  32.       show_entry is used to filter filenames.
  33.  
  34.     * The patchlevel.h file has been updated to patch level two.
  35.  
  36. --
  37. Erik M. van der Poel                  erik@sra.co.jp             (Japan)
  38. SRA, 1-1-1 Hirakawa-cho, Chiyoda-ku   erik%sra.co.jp@uunet.uu.net  (USA)
  39. Tokyo 102 Japan. TEL +81-3-234-2692   erik%sra.co.jp@mcvax.uucp (Europe)
  40.  
  41.  
  42. Prereq: 1
  43. *** ../old/patchlevel.h    Tue Oct 31 14:04:11 1989
  44. --- patchlevel.h    Thu Sep 28 16:41:11 1989
  45. ***************
  46. *** 1 ****
  47. ! #define PATCHLEVEL 1
  48. --- 1 ----
  49. ! #define PATCHLEVEL 2
  50. *** ../old/SelFile.c    Tue Oct 31 14:04:09 1989
  51. --- SelFile.c    Fri Oct 27 15:41:41 1989
  52. ***************
  53. *** 1,5 ****
  54.   #ifndef lint
  55. ! static char rcsid[] = "$Header: SelFile.c,v 1.12 89/08/30 16:00:17 erik Exp $";
  56.   #endif
  57.   
  58.   /*
  59. --- 1,5 ----
  60.   #ifndef lint
  61. ! static char rcsid[] = "$Header: SelFile.c,v 1.13 89/10/27 15:41:26 erik Exp $";
  62.   #endif
  63.   
  64.   /*
  65. ***************
  66. *** 349,354 ****
  67. --- 349,355 ----
  68.   
  69.       i = 0;
  70.       XtSetArg(arglist[i], XtNallowShellResize, True);        i++;
  71. +     XtSetArg(arglist[i], XtNinput, True);                i++;
  72.   
  73.   #ifdef SEL_FILE_R2_XT
  74.   
  75. *** ../old/Dir.c    Tue Oct 31 14:04:02 1989
  76. --- Dir.c    Thu Sep 28 16:31:52 1989
  77. ***************
  78. *** 1,5 ****
  79.   #ifndef lint
  80. ! static char rcsid[] = "$Header: Dir.c,v 1.4 89/08/30 15:56:15 erik Exp $";
  81.   #endif
  82.   
  83.   /*
  84. --- 1,5 ----
  85.   #ifndef lint
  86. ! static char rcsid[] = "$Header: Dir.c,v 1.6 89/09/28 16:31:23 erik Exp $";
  87.   #endif
  88.   
  89.   /*
  90. *** ../old/Draw.c    Tue Oct 31 14:04:04 1989
  91. --- Draw.c    Thu Sep 28 16:33:52 1989
  92. ***************
  93. *** 1,5 ****
  94.   #ifndef lint
  95. ! static char rcsid[] = "$Header: Draw.c,v 1.10 89/08/30 15:58:01 erik Exp $";
  96.   #endif
  97.   
  98.   /*
  99. --- 1,5 ----
  100.   #ifndef lint
  101. ! static char rcsid[] = "$Header: Draw.c,v 1.11 89/09/28 16:32:19 erik Exp $";
  102.   #endif
  103.   
  104.   /*
  105. ***************
  106. *** 189,195 ****
  107.   
  108.   #if defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR)
  109.           i = 0;
  110. !         if (SFdirPtr + n < SFdirEnd) {
  111.               XtSetArg(arglist[i], XtNsliderMax, dir->nEntries);
  112.                                       i++;
  113.               XtSetArg(arglist[i], XtNsliderExtent,
  114. --- 189,195 ----
  115.   
  116.   #if defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR)
  117.           i = 0;
  118. !         if ((SFdirPtr + n < SFdirEnd) && dir->nEntries) {
  119.               XtSetArg(arglist[i], XtNsliderMax, dir->nEntries);
  120.                                       i++;
  121.               XtSetArg(arglist[i], XtNsliderExtent,
  122. ***************
  123. *** 206,212 ****
  124.           XtSetValues(selFileVScrolls[n], arglist, i);
  125.   
  126.           i = 0;
  127. !         if (SFdirPtr + n < SFdirEnd) {
  128.               XtSetArg(arglist[i], XtNsliderMax, dir->nChars);i++;
  129.               XtSetArg(arglist[i], XtNsliderExtent,
  130.                   dir->nChars < SFcharsPerEntry ? dir->nChars :
  131. --- 206,212 ----
  132.           XtSetValues(selFileVScrolls[n], arglist, i);
  133.   
  134.           i = 0;
  135. !         if ((SFdirPtr + n < SFdirEnd) && dir->nChars) {
  136.               XtSetArg(arglist[i], XtNsliderMax, dir->nChars);i++;
  137.               XtSetArg(arglist[i], XtNsliderExtent,
  138.                   dir->nChars < SFcharsPerEntry ? dir->nChars :
  139. ***************
  140. *** 222,228 ****
  141.           }
  142.           XtSetValues(selFileHScrolls[n], arglist, i);
  143.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  144. !         if (SFdirPtr + n < SFdirEnd) {
  145.               XtScrollBarSetThumb(
  146.                   selFileVScrolls[n],
  147.                   (float) (((double) dir->vOrigin) /
  148. --- 222,228 ----
  149.           }
  150.           XtSetValues(selFileHScrolls[n], arglist, i);
  151.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  152. !         if ((SFdirPtr + n < SFdirEnd) && dir->nEntries && dir->nChars) {
  153.               XtScrollBarSetThumb(
  154.                   selFileVScrolls[n],
  155.                   (float) (((double) dir->vOrigin) /
  156. ***************
  157. *** 290,296 ****
  158.           *e = *(e + 1);
  159.       }
  160.   
  161. !     dir->nEntries--;
  162.   
  163.       n = dir - &(SFdirs[SFdirPtr]);
  164.       if ((n < 0) || (n > 2)) {
  165. --- 290,298 ----
  166.           *e = *(e + 1);
  167.       }
  168.   
  169. !     if (!(--dir->nEntries)) {
  170. !         return;
  171. !     }
  172.   
  173.       n = dir - &(SFdirs[SFdirPtr]);
  174.       if ((n < 0) || (n > 2)) {
  175. ***************
  176. *** 368,374 ****
  177.           last = strlen(entry->real) - 1;
  178.           entry->real[last] = 0;
  179.           entry->statDone = 1;
  180. !         if (!stat(entry->real, &statBuf)) {
  181.               if (SFfunc) {
  182.                   char *shown;
  183.   
  184. --- 370,385 ----
  185.           last = strlen(entry->real) - 1;
  186.           entry->real[last] = 0;
  187.           entry->statDone = 1;
  188. !         if (
  189. !             (!stat(entry->real, &statBuf))
  190. ! #ifdef S_IFLNK
  191. !              || (!lstat(entry->real, &statBuf))
  192. ! #endif /* ndef S_IFLNK */
  193. !         ) {
  194.               if (SFfunc) {
  195.                   char *shown;
  196.   
  197. ***************
  198. *** 598,609 ****
  199.           XtSetArg(arglist[i], XtNsliderOrigin, dir->vOrigin);    i++;
  200.           XtSetValues(selFileVScrolls[n], arglist, i);
  201.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  202. !         XtScrollBarSetThumb(
  203.               selFileVScrolls[n],
  204.               (float) (((double) dir->vOrigin) / dir->nEntries),
  205.               (float) (((double) ((dir->nEntries < SFlistSize) ?
  206.                   dir->nEntries : SFlistSize)) / dir->nEntries)
  207. !         );
  208.   #endif /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  209.   
  210.       }
  211. --- 609,622 ----
  212.           XtSetArg(arglist[i], XtNsliderOrigin, dir->vOrigin);    i++;
  213.           XtSetValues(selFileVScrolls[n], arglist, i);
  214.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  215. !         if (dir->nEntries) {
  216. !             XtScrollBarSetThumb(
  217.               selFileVScrolls[n],
  218.               (float) (((double) dir->vOrigin) / dir->nEntries),
  219.               (float) (((double) ((dir->nEntries < SFlistSize) ?
  220.                   dir->nEntries : SFlistSize)) / dir->nEntries)
  221. !             );
  222. !         }
  223.   #endif /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  224.   
  225.       }
  226. ***************
  227. *** 887,893 ****
  228.       XtSetArg(arglist[i], XtNsliderOrigin, new);            i++;
  229.       XtSetValues(w, arglist, i);
  230.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  231. !     {
  232.           float    f;
  233.   
  234.           f = ((double) new) / dir->nEntries;
  235. --- 900,906 ----
  236.       XtSetArg(arglist[i], XtNsliderOrigin, new);            i++;
  237.       XtSetValues(w, arglist, i);
  238.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  239. !     if (dir->nEntries) {
  240.           float    f;
  241.   
  242.           f = ((double) new) / dir->nEntries;
  243. ***************
  244. *** 983,989 ****
  245.   
  246.       SFhSliderMovedCallback(w, n, new);
  247.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  248. !     {
  249.           float    f;
  250.   
  251.           f = ((double) new) / dir->nChars;
  252. --- 996,1002 ----
  253.   
  254.       SFhSliderMovedCallback(w, n, new);
  255.   #else /* defined(SEL_FILE_XW) || defined(SEL_FILE_XWSCROLLBAR) */
  256. !     if (dir->nChars) {
  257.           float    f;
  258.   
  259.           f = ((double) new) / dir->nChars;
  260. ***************
  261. *** 1131,1136 ****
  262. --- 1144,1152 ----
  263.       register SFEntry    *entry;
  264.   
  265.       for (dir = &(SFdirs[SFdirEnd - 1]); dir >= SFdirs; dir--) {
  266. +         if (!(dir->nEntries)) {
  267. +             continue;
  268. +         }
  269.           for (
  270.               entry = &(dir->entries[dir->nEntries - 1]);
  271.               entry >= dir->entries;
  272. *** ../old/Path.c    Tue Oct 31 14:04:07 1989
  273. --- Path.c    Thu Sep 28 16:35:23 1989
  274. ***************
  275. *** 1,5 ****
  276.   #ifndef lint
  277. ! static char rcsid[] = "$Header: Path.c,v 1.9 89/08/30 15:58:47 erik Exp $";
  278.   #endif
  279.   
  280.   /*
  281. --- 1,5 ----
  282.   #ifndef lint
  283. ! static char rcsid[] = "$Header: Path.c,v 1.10 89/09/28 16:33:57 erik Exp $";
  284.   #endif
  285.   
  286.   /*
  287. ***************
  288. *** 538,544 ****
  289.           dir->changed = 1;
  290.           dir->beginSelection = -1;
  291.           dir->endSelection = -1;
  292. -         SFrootDir = *dir;
  293.           SFgetHomeDirs();
  294.       }
  295.   
  296. --- 538,543 ----
  297. ***************
  298. *** 554,559 ****
  299. --- 553,559 ----
  300.           if (!SFtwiddle) {
  301.               SFtwiddle = 1;
  302.               dir = &(SFdirs[0]);
  303. +             SFrootDir = *dir;
  304.               *dir = SFhomeDir;
  305.               dir->changed = 1;
  306.           }
  307.