home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / fish / telecom / uucp_442 / src / dnews / subs.c < prev    next >
C/C++ Source or Header  |  1990-12-09  |  2KB  |  91 lines

  1.  
  2. /*
  3.  *  SUBS.C
  4.  */
  5.  
  6. #include <exec/types.h>
  7. #include "defs.h"
  8. #include <libraries/dos.h>
  9. #include <fcntl.h>
  10.  
  11. Prototype void FindUser(char *, int);
  12. Prototype void ScanNewsDirs(void (*)(), long);
  13. Prototype char *FindField(FILE *, char *);
  14. Prototype int  FileExists(char *);
  15.  
  16. typedef struct FileInfoBlock FIB;
  17.  
  18. void
  19. FindUser(buf, bufsiz)
  20. char *buf;
  21. int bufsiz;
  22. {
  23.     char *user;
  24.  
  25.     user = GetUserName();
  26.  
  27.     if (user == NULL) {
  28.     user = "FuBar";
  29.     printf("No UserName env: var or Config var !\n");
  30.     }
  31.     strncpy(buf, user, bufsiz - 1);
  32.     buf[bufsiz] = 0;
  33. }
  34.  
  35. void
  36. ScanNewsDirs(vect, arg)
  37. void (*vect)();
  38. long arg;
  39. {
  40.     FIB *fib = malloc(sizeof(FIB));
  41.     char *cfdir = GetConfigDir(UUNEWS);
  42.     BPTR lock;
  43.  
  44.     if (lock = Lock(cfdir, SHARED_LOCK)) {
  45.     if (Examine(lock, fib)) {
  46.         while (ExNext(lock, fib)) {
  47.         sprintf(TmpBuf, "%s%s", cfdir, fib->fib_FileName);
  48.         (*vect)(TmpBuf, fib->fib_FileName, arg);
  49.         }
  50.     }
  51.     UnLock(lock);
  52.     }
  53.     free(fib);
  54. }
  55.  
  56. char *
  57. FindField(fi, field)
  58. FILE *fi;
  59. char *field;
  60. {
  61.     short len = strlen(field);
  62.  
  63.     rewind(fi);
  64.     while (fgets(TmpBuf, sizeof(TmpBuf), fi) && TmpBuf[0] != '\n') {
  65.     if (strnicmp(TmpBuf, field, len) == 0) {
  66.         field = TmpBuf + len;
  67.         while (*field == ' ' || *field == 9)
  68.         ++field;
  69.         for (len = strlen(field) - 1; len >= 0 && (field[len] == ' ' || field[len] == 9 || field[len] == '\n'); --len);
  70.         ++len;
  71.         field[len] = 0;
  72.         return(strdup(field));
  73.     }
  74.     }
  75.     return(NULL);
  76. }
  77.  
  78. int
  79. FileExists(file)
  80. char *file;
  81. {
  82.     int fd;
  83.  
  84.     if ((fd = open(file, O_RDONLY)) >= 0) {
  85.     close(fd);
  86.     return(1);
  87.     }
  88.     return(0);
  89. }
  90.  
  91.