home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / n / tcpip / wu-ftpd-.4 / wu-ftpd-2.4.diff
Encoding:
Text File  |  1995-06-12  |  15.7 KB  |  519 lines

  1. --- Makefile
  2. +++ Makefile    1994/06/18 13:38:08
  3. @@ -1,6 +1,6 @@
  4. -BINDIR=        /usr/local/bin
  5. -ETCDIR=        /usr/local/etc
  6. -MANDIR=        /usr/local/man
  7. +BINDIR=        /usr/bin
  8. +ETCDIR=        /usr/sbin
  9. +MANDIR=        /usr/man
  10.  MANEXT=        8
  11.  
  12.  all:
  13. @@ -8,18 +8,18 @@
  14.      @ echo 'You can say "build help" for details on how it works.'
  15.  
  16.  install: bin/ftpd bin/ftpcount bin/ftpshut
  17. -    -mv -f ${ETCDIR}/ftpd ${ETCDIR}/ftpd-old
  18.      @echo Installing binaries.
  19. -    install -o bin -g bin -m 755 bin/ftpd ${ETCDIR}/ftpd
  20. -    install -o bin -g bin -m 755 bin/ftpshut ${BINDIR}/ftpshut
  21. -    install -o bin -g bin -m 755 bin/ftpcount ${BINDIR}/ftpcount
  22. -    install -o bin -g bin -m 755 bin/ftpwho ${BINDIR}/ftpwho
  23. +    install -s bin/ftpd ${ETCDIR}/wu-ftpd
  24. +    install -s bin/ftpshut ${BINDIR}/ftpshut
  25. +    install -s bin/ftpcount ${BINDIR}/ftpcount
  26. +    install -s bin/ftpwho ${BINDIR}/ftpwho
  27. +    install util/xferstats ${BINDIR}/xferstats
  28.      @echo Installing manpages.
  29. -    install -o bin -g bin -m 755 doc/ftpd.8 ${MANDIR}/man8/ftpd.8
  30. -    install -o bin -g bin -m 755 doc/ftpcount.1 ${MANDIR}/man1/ftpcount.1
  31. -    install -o bin -g bin -m 755 doc/ftpwho.1 ${MANDIR}/man1/ftpwho.1
  32. -    install -o bin -g bin -m 755 doc/ftpshut.8 ${MANDIR}/man8/ftpshut.8
  33. -    install -o bin -g bin -m 755 doc/ftpaccess.5 ${MANDIR}/man5/ftpaccess.5
  34. -    install -o bin -g bin -m 755 doc/ftphosts.5 ${MANDIR}/man5/ftphosts.5
  35. -    install -o bin -g bin -m 755 doc/ftpconversions.5 ${MANDIR}/man5/ftpconversions.5
  36. -    install -o bin -g bin -m 755 doc/xferlog.5 ${MANDIR}/man5/xferlog.5
  37. +    install -m 644 doc/ftpd.8 ${MANDIR}/man8/wu-ftpd.8
  38. +    install -m 644 doc/ftpcount.1 ${MANDIR}/man1/ftpcount.1
  39. +    install -m 644 doc/ftpwho.1 ${MANDIR}/man1/ftpwho.1
  40. +    install -m 644 doc/ftpshut.8 ${MANDIR}/man8/ftpshut.8
  41. +    install -m 644 doc/ftpaccess.5 ${MANDIR}/man5/ftpaccess.5
  42. +    install -m 644 doc/ftphosts.5 ${MANDIR}/man5/ftphosts.5
  43. +    install -m 644 doc/ftpconversions.5 ${MANDIR}/man5/ftpconversions.5
  44. +    install -m 644 doc/xferlog.5 ${MANDIR}/man5/xferlog.5
  45. --- Makefile.Linux
  46. +++ Makefile.Linux    1994/07/05 12:13:59
  47. @@ -0,0 +1,12 @@
  48. +ifdef HAVE_SHADOW_PASSWORDS
  49. +opt = -DHAVE_SHADOW_PASSWORDS
  50. +else
  51. +opt =
  52. +endif
  53. +
  54. +all:
  55. +    ./build lnx $(opt)
  56. +
  57. +install: compile
  58. +    make install
  59. +
  60. --- build
  61. +++ build    1994/06/18 13:38:08
  62. @@ -92,12 +93,12 @@
  63.          cd ..
  64.          if [ ! -d bin ] ;  then    mkdir bin;        fi
  65.          cd bin
  66. -        rm -f ftpd ftpcount ftpshut
  67. +        rm -f ftpd ftpcount ftpshut ftpwho
  68.          if [ -s ../src/ftpd ] ;      then ln ../src/ftpd  ftpd      ; fi
  69.          if [ -s ../src/ftpcount ] ;  then ln ../src/ftpcount ftpcount ; fi
  70.          if [ -s ../src/ftpshut ] ;   then ln ../src/ftpshut ftpshut    ; fi
  71. -        if [ -s ../src/ftpshut ] ;   then ln ../src/ftpcount ftpwho    ; fi
  72. -        if [ -s ../src/ckconfig ] ;  then ln ../src/ckconfig ckconfig  ; fi
  73. +        if [ -s ../src/ftpcount ] ;   then ln ../src/ftpcount ftpwho    ; fi
  74. +    if [ -s ../src/ckconfig ] ;  then ln ../src/ckconfig ckconfig  ; fi
  75.          cd ..
  76.          echo ''
  77.          echo "Links to executables are in bin directory:"
  78. --- src/access.c
  79. +++ src/access.c    1994/06/18 13:38:08
  80. @@ -100,7 +100,7 @@
  81.      while (match && isalpha(*whattime) && isupper(*whattime)) {
  82.          match = 0;
  83.          for (loop = 0; loop < 8; loop++) {
  84. -            if (strncmp(days[loop], whattime, 2) == NULL) {
  85. +            if (strncmp(days[loop], whattime, 2) == 0) {
  86.                  whattime += 2;
  87.                  match = 1;
  88.                  if ((wday == loop) | ((loop == 7) && wday && (wday < 6))) {
  89. @@ -110,7 +110,7 @@
  90.          }
  91.      }
  92.  
  93. -    if (strncmp(whattime, "Any", 3) == NULL) {
  94. +    if (strncmp(whattime, "Any", 3) == 0) {
  95.          validday = 1;
  96.          whattime += 3;
  97.      }
  98. @@ -428,7 +428,7 @@
  99.      struct aclmember *entry = NULL;
  100.  
  101.      if (msgpathbuf)
  102. -        *msgpathbuf = NULL;
  103. +        *msgpathbuf = '\0';
  104.  
  105.      /* limit <class> <n> <times> [<message_file>] */
  106.      while (getaclentry("limit", &entry)) {
  107. --- src/acl.c
  108. +++ src/acl.c    1994/06/18 13:38:08
  109. @@ -39,6 +39,7 @@
  110.  #else
  111.  #include <syslog.h>
  112.  #endif
  113. +#include <stdlib.h>
  114.  
  115.  #include <sys/types.h>
  116.  #include <sys/stat.h>
  117. @@ -93,7 +94,7 @@
  118.      aclmembers = (struct aclmember *) NULL;
  119.      acltail = (struct aclmember *) NULL;
  120.  
  121. -    while (*aclptr != NULL) {
  122. +    while (*aclptr != '\0') {
  123.          line = aclptr;
  124.          while (*aclptr && *aclptr != '\n')
  125.              aclptr++;
  126. @@ -103,7 +104,7 @@
  127.          if ((ptr = strchr(line, '#')) != NULL)
  128.              /* allowed escaped '#' chars for path-filter (DiB) */
  129.              if (*(ptr-1) != '\\')
  130. -                *ptr = NULL;
  131. +                *ptr = '\0';
  132.  
  133.          ptr = strtok(line, " \t");
  134.          if (ptr) {
  135. @@ -111,8 +112,16 @@
  136.  
  137.              (void) strcpy(member->keyword, ptr);
  138.              cnt = 0;
  139. -            while ((ptr = strtok(NULL, " \t")) != NULL)
  140. +            while ((ptr = strtok(NULL, " \t")) != NULL) {
  141. +        if (cnt >= MAXARGS) {
  142. +            syslog(LOG_ERR,
  143. +            "Too many args (>%d) in ftpaccess: %s %s %s %s %s ...",
  144. +            MAXARGS - 1, member->keyword, member->arg[0],
  145. +            member->arg[1], member->arg[2], member->arg[3]);
  146. +            break;
  147. +        }
  148.                  member->arg[cnt++] = ptr;
  149. +        }
  150.              if (acltail)
  151.                  acltail->next = member;
  152.              acltail = member;
  153. --- src/config/config.lnx
  154. +++ src/config/config.lnx    1994/07/05 12:12:12
  155. @@ -14,14 +14,17 @@
  156.  #undef  REGEX
  157.  #define SETPROCTITLE
  158.  #undef  SHADOW_PASSWORD
  159. +#ifdef    HAVE_SHADOW_PASSWORDS
  160. +#define SHADOW_PASSWORD
  161. +#endif
  162.  #define UPLOAD
  163.  #undef  USG
  164.  #define SVR4
  165. +#define FACILITY LOG_DAEMON
  166.  
  167.  #include <varargs.h>
  168.  #include <bsd.h>
  169.  
  170. -typedef    int    mode_t
  171. -typedef int SIGNAL_TYPE
  172. +typedef void SIGNAL_TYPE;
  173.  
  174.  #include "../config.h"
  175. --- src/extensions.c
  176. +++ src/extensions.c    1994/06/18 13:38:08
  177. @@ -42,6 +42,7 @@
  178.  #include <time.h>
  179.  #include <pwd.h>
  180.  #include <grp.h>
  181. +#include <unistd.h>
  182.  
  183.  #include <sys/types.h>
  184.  #include <sys/stat.h>
  185. @@ -167,7 +168,7 @@
  186.  
  187.              case 'T':
  188.                  strncpy(outptr, ctime(&curtime), 24);
  189. -                *(outptr + 24) = NULL;
  190. +                *(outptr + 24) = '\0';
  191.                  break;
  192.  
  193.              case 'F':
  194. @@ -198,17 +199,17 @@
  195.  
  196.              case 's':
  197.                  strncpy(outptr, shuttime, 24);
  198. -                *(outptr + 24) = NULL;
  199. +                *(outptr + 24) = '\0';
  200.                  break;
  201.  
  202.              case 'd':
  203.                  strncpy(outptr, disctime, 24);
  204. -                *(outptr + 24) = NULL;
  205. +                *(outptr + 24) = '\0';
  206.                  break;
  207.  
  208.              case 'r':
  209.                  strncpy(outptr, denytime, 24);
  210. -                *(outptr + 24) = NULL;
  211. +                *(outptr + 24) = '\0';
  212.                  break;
  213.  
  214.              case '%':
  215. @@ -227,7 +228,7 @@
  216.          }
  217.          inptr++;
  218.      }
  219. -    *outptr = NULL;
  220. +    *outptr = '\0';
  221.  }
  222.  
  223.  /*************************************************************************/
  224. @@ -253,7 +254,7 @@
  225.      (void) realpath(".", cwd);
  226.  
  227.      for (curptr = head; curptr != NULL; curptr = curptr->next)
  228. -        if (strcmp(curptr->dirname, cwd) == NULL) {
  229. +        if (strcmp(curptr->dirname, cwd) == 0) {
  230.              if (!(curptr->dircode & dircode)) {
  231.                  curptr->dircode |= dircode;
  232.                  return (0);
  233. @@ -345,7 +346,7 @@
  234.                  show++;
  235.              else {
  236.                  for (which = 2; (which < MAXARGS) && ARG[which]; which++)
  237. -                    if (strcasecmp(class, ARG[which]) == NULL)
  238. +                    if (strcasecmp(class, ARG[which]) == 0)
  239.                          show++;
  240.              }
  241.          if (mode == C_WD && ARG1 && !strncasecmp(ARG1, "cwd=", 4) &&
  242. @@ -355,7 +356,7 @@
  243.                  show++;
  244.              else {
  245.                  for (which = 2; (which < MAXARGS) && ARG[which]; which++)
  246. -                    if (strcasecmp(class, ARG[which]) == NULL)
  247. +                    if (strcasecmp(class, ARG[which]) == 0)
  248.                          show++;
  249.              }
  250.          if (show && strlen(ARG0) > 0) {
  251. @@ -417,7 +418,7 @@
  252.                  show++;
  253.              else {
  254.                  for (which = 2; (which < MAXARGS) && ARG[which]; which++)
  255. -                    if (strcasecmp(class, ARG[which]) == NULL)
  256. +                    if (strcasecmp(class, ARG[which]) == 0)
  257.                          show++;
  258.              }
  259.          if (mode == C_WD && ARG1 && !strncasecmp(ARG1, "cwd=", 4)
  260. @@ -427,7 +428,7 @@
  261.                  show++;
  262.              else {
  263.                  for (which = 2; (which < MAXARGS) && ARG[which]; which++)
  264. -                    if (strcasecmp(class, ARG[which]) == NULL)
  265. +                    if (strcasecmp(class, ARG[which]) == 0)
  266.                          show++;
  267.              }
  268.          if (show) {
  269. --- src/ftpcmd.y
  270. +++ src/ftpcmd.y    1994/06/18 13:38:09
  271. @@ -52,6 +52,7 @@
  272.  #include <netinet/in.h>
  273.  #include <arpa/ftp.h>
  274.  #include <stdio.h>
  275. +#include <stdlib.h>
  276.  #include <signal.h>
  277.  #include <ctype.h>
  278.  #include <pwd.h>
  279. --- src/ftpcount.c
  280. +++ src/ftpcount.c    1994/06/18 13:38:09
  281. @@ -95,7 +95,7 @@
  282.      while (match && isalpha(*whattime) && isupper(*whattime)) {
  283.          match = 0;
  284.          for (loop = 0; loop < 8; loop++) {
  285. -            if (strncmp(days[loop], whattime, 2) == NULL) {
  286. +            if (strncmp(days[loop], whattime, 2) == 0) {
  287.                  whattime += 2;
  288.                  match = 1;
  289.                  if ((wday == loop) | ((loop == 7) && wday && (wday < 6)))
  290. @@ -104,7 +104,7 @@
  291.          }
  292.      }
  293.  
  294. -    if (strncmp(whattime, "Any", 3) == NULL) {
  295. +    if (strncmp(whattime, "Any", 3) == 0) {
  296.          validday = 1;
  297.          whattime += 3;
  298.      }
  299. @@ -156,10 +156,10 @@
  300.        linebuf[1024];
  301.      int limit;
  302.  
  303. -    while (*aclbuf != NULL) {
  304. +    while (*aclbuf != '\0') {
  305.          if (strncasecmp(aclbuf, "limit", 5) == 0) {
  306.              for (crptr = aclbuf; *crptr++ != '\n';) ;
  307. -            *--crptr = NULL;
  308. +            *--crptr = '\0';
  309.              strcpy(linebuf, aclbuf);
  310.              *crptr = '\n';
  311.              (void) strtok(linebuf, " \t");  /* returns "limit" */
  312. @@ -304,10 +304,10 @@
  313.  
  314.      (void) new_list(&list);
  315.      myaclbuf = aclbuf;
  316. -    while (*myaclbuf != NULL) {
  317. +    while (*myaclbuf != '\0') {
  318.          if (strncasecmp(myaclbuf, "class", 5) == 0) {
  319.              for (crptr = myaclbuf; *crptr++ != '\n';) ;
  320. -            *--crptr = NULL;
  321. +            *--crptr = '\0';
  322.              strcpy(linebuf, myaclbuf);
  323.              *crptr = '\n';
  324.              (void) strtok(linebuf, " \t");  /* returns "class" */
  325. --- src/ftpd.c
  326. +++ src/ftpd.c    1994/06/18 13:38:09
  327. @@ -560,10 +560,10 @@
  328.  randomsig(int sig)
  329.  {
  330.      syslog(LOG_ERR, "exiting on signal %d", sig);
  331. -    chdir("/etc/tmp");
  332. +    chdir("/tmp");
  333.      signal(SIGIOT, SIG_DFL);
  334.      signal(SIGILL, SIG_DFL);
  335. -    abort();
  336. +    exit(1);
  337.      /* dologout(-1); *//* NOTREACHED */
  338.  }
  339.  
  340. @@ -999,7 +999,7 @@
  341.          }
  342.  #endif
  343.  
  344. -        *guestpw = NULL;
  345. +        *guestpw = '\0';
  346.          if (pw == NULL)
  347.              salt = "xx";
  348.          else
  349. @@ -1223,11 +1223,11 @@
  350.      static char buf[100];
  351.      char *ptr = buf;
  352.  
  353. -    if ((options & O_COMPRESS) != NULL)
  354. +    if ((options & O_COMPRESS) != 0)
  355.          *ptr++ = 'C';
  356. -    if ((options & O_TAR) != NULL)
  357. +    if ((options & O_TAR) != 0)
  358.          *ptr++ = 'T';
  359. -    if ((options & O_UNCOMPRESS) != NULL)
  360. +    if ((options & O_UNCOMPRESS) != 0)
  361.          *ptr++ = 'U';
  362.      if (options == 0)
  363.          *ptr++ = '_';
  364. @@ -1339,7 +1339,7 @@
  365.              strcpy(namebuf, cptr->external_cmd);
  366.              if ((ptr = strchr(namebuf, ' ')) != NULL)
  367.                  *ptr = '\0';
  368. -            if (stat(namebuf, &st) != NULL) {
  369. +            if (stat(namebuf, &st) != 0) {
  370.                  syslog(LOG_ERR, "external command %s not found",
  371.                         namebuf);
  372.                  (void) reply(550,
  373. --- src/ftpshut.c
  374. +++ src/ftpshut.c    1994/06/18 13:38:09
  375. @@ -185,10 +185,10 @@
  376.      }
  377.  
  378.      myaclbuf = aclbuf;
  379. -    while (*myaclbuf != NULL) {
  380. +    while (*myaclbuf != '\0') {
  381.          if (strncasecmp(myaclbuf, "shutdown", 8) == 0) {
  382.              for (crptr = myaclbuf; *crptr++ != '\n';) ;
  383. -            *--crptr = NULL;
  384. +            *--crptr = '\0';
  385.              strcpy(linebuf, myaclbuf);
  386.              *crptr = '\n';
  387.              (void) strtok(linebuf, " \t");  /* returns "shutdown" */
  388. --- src/glob.c
  389. +++ src/glob.c    1994/06/18 13:38:10
  390. @@ -54,6 +54,7 @@
  391.  #include <errno.h>
  392.  #include <stdio.h>
  393.  #include <string.h>
  394. +#include <stdlib.h>
  395.  
  396.  #define    QUOTE 0200
  397.  #define    TRIM 0177
  398. --- src/hostacc.c
  399. +++ src/hostacc.c    1994/06/18 13:38:10
  400. @@ -69,7 +69,7 @@
  401.          while (((ptHtmp = gethacc()) != (hacc_t *)NULL) && !iLineMatch)
  402.          {
  403.                  if ( (strcasecmp(pcRuser, ptHtmp->ha_login)) &&
  404. -                      strcmp(ptHtmp->ha_login, "*") != NULL)
  405. +                      strcmp(ptHtmp->ha_login, "*") != 0)
  406.                          /* wrong user, check rest of file */
  407.                          continue;
  408.  
  409. --- src/makefiles/Makefile.lnx
  410. +++ src/makefiles/Makefile.lnx    1994/07/05 12:13:06
  411. @@ -1,17 +1,21 @@
  412.  CC       = gcc
  413.  IFLAGS   = -I.. -I../support -I/usr/include/bsd
  414.  LFLAGS   = -L../support
  415. -CFLAGS   = -O -DDEBUG ${IFLAGS} ${LFLAGS}
  416. +CFLAGS   = -O2 -fomit-frame-pointer -DDEBUG ${IFLAGS} ${LFLAGS}
  417.  LIBES    = -lsupport -lbsd
  418. +ifdef HAVE_SHADOW_PASSWORDS
  419. +LIBES = $(LIBES) -lshadow
  420. +CFLAGS = $(CFLAGS) -DHAVE_SHADOW_PASSWORDS
  421. +endif
  422.  LIBC     = /usr/lib/libc.a
  423.  LINTFLAGS=    
  424.  LKERB    = -lauth -lckrb -lkrb -ldes
  425.  MKDEP    = ../util/mkdep
  426.  
  427.  SRCS   = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \
  428. -         realpath.c acl.c private.c authenticate.c conversions.c hostacc.c
  429. +         acl.c private.c authenticate.c conversions.c hostacc.c
  430.  OBJS   = ftpd.o ftpcmd.o glob.o logwtmp.o popen.o vers.o access.o extensions.o \
  431. -         realpath.o acl.o private.o authenticate.o conversions.o hostacc.o
  432. +         acl.o private.o authenticate.o conversions.o hostacc.o
  433.  
  434.  all: ftpd ftpcount ftpshut ckconfig
  435.  
  436. --- src/pathnames.h
  437. +++ src/pathnames.h    1994/07/05 12:00:18
  438. @@ -30,23 +30,23 @@
  439.   * @(#)pathnames.h 5.2 (Berkeley) 6/1/90 */
  440.  
  441.  #define _PATH_FTPUSERS  "/etc/ftpusers"
  442. -#define _PATH_FTPACCESS "/usr/local/etc/ftpaccess"
  443. -#define _PATH_EXECPATH  "/bin/ftp-exec"
  444. -#define _PATH_PIDNAMES  "/usr/local/daemon/ftpd/ftp.pids-%s"
  445. -#define _PATH_CVT       "/usr/local/etc/ftpconversions"
  446. -#define _PATH_XFERLOG   "/usr/adm/xferlog"
  447. +#define _PATH_FTPACCESS "/etc/ftpaccess"
  448. +#define _PATH_EXECPATH  "/bin/ftp-exec"
  449. +#define _PATH_PIDNAMES  "/var/pid/ftp.pids-%s"
  450. +#define _PATH_CVT       "/etc/ftpconversions"
  451. +#define _PATH_XFERLOG   "/var/adm/xferlog"
  452.  #define _PATH_PRIVATE   "/etc/ftpgroups"
  453.  
  454.  #ifndef _PATH_UTMP
  455.  #define _PATH_UTMP      "/etc/utmp"
  456. -#define _PATH_WTMP      "/usr/adm/wtmp"
  457. -#define _PATH_LASTLOG   "/usr/adm/lastlog"
  458. +#define _PATH_WTMP      "/var/adm/wtmp"
  459. +#define _PATH_LASTLOG   "/var/adm/lastlog"
  460.  #endif
  461.  
  462.  #define _PATH_BSHELL    "/bin/sh"
  463.  #define _PATH_DEVNULL   "/dev/null"
  464.  
  465.  #ifdef  HOST_ACCESS
  466. -#define _PATH_FTPHOSTS  "/usr/local/etc/ftphosts"
  467. +#define _PATH_FTPHOSTS  "/etc/ftphosts"
  468.  #endif
  469.  
  470. --- src/private.c
  471. +++ src/private.c    1994/06/18 13:38:10
  472. @@ -42,6 +42,7 @@
  473.  #include <syslog.h>
  474.  #endif
  475.  #include <grp.h>
  476. +#include <stdlib.h>
  477.  
  478.  #include <sys/types.h>
  479.  #include <sys/stat.h>
  480. --- support/ftw.c
  481. +++ support/ftw.c    1994/06/18 13:38:10
  482. @@ -149,7 +149,7 @@
  483.                      break;
  484.          }
  485.          if (cur.off) {
  486. -            *name = NULL;
  487. +            *name = '\0';
  488.              if ( (cur.dirp = opendir(bp)) ) {
  489.                  seekdir(cur.dirp, cur.off);
  490.                  /* tricky; if we have to reset the directory pointer we know
  491. --- support/makefiles/Makefile.lnx
  492. +++ support/makefiles/Makefile.lnx    1994/06/18 13:38:10
  493. @@ -2,18 +2,17 @@
  494.  AR     = ar cq
  495.  RANLIB = ranlib
  496.  LIBC   = /lib/libc.a
  497. -IFLAGS = 
  498. +IFLAGS = -I /usr/include/bsd
  499.  LFLAGS = 
  500. -CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS}
  501. +CFLAGS = -O2 -fomit-frame-pointer -DDEBUG -I /usr/include/bsd
  502.  
  503.  SRCS   = getusershell.c fnmatch.c strcasestr.c strerror.c authuser.c ftw.c
  504.  OBJS   = getusershell.o fnmatch.o strcasestr.o strerror.o authuser.o ftw.o
  505. -all: $(OBJS)
  506. -     -rm -f libsupport.a
  507. -     ${AR} libsupport.a $(OBJS)
  508. -     ${RANLIB} libsupport.a
  509. +
  510. +all:    $(OBJS)
  511. +    ${AR} libsupport.a $(OBJS)
  512. +    ${RANLIB} libsupport.a
  513. +
  514.  clean:
  515.      -rm -f *.o libsupport.a
  516.  
  517.