home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / _bbs / maxtool / max.c < prev    next >
C/C++ Source or Header  |  1994-01-13  |  4KB  |  156 lines

  1. /*
  2.   
  3.     Maximus CDROM Mount :
  4.   
  5.     Creates FILES.BBS files and CDAREAS.CTL from indexfile on 
  6.     CD-ROM from Walnut Creek CD-ROM.
  7.   
  8.     Usage :
  9.   
  10.     MAX <CD-ROMdrive> <Directory for FILES.BBS files> [starting area]
  11.   
  12.     Example :
  13.   
  14.     MAX G: C:\MAX\CDAREAS
  15.     MAX G: C:\MAX\CDAREAS 100
  16.   
  17. */
  18.  
  19.  
  20. #include <ctype.h>
  21. #include <stdio.h>
  22. #include <stdlib.h>
  23. #include <string.h>
  24.  
  25. void 
  26. main(int argc, char **argv) {
  27.     FILE *dosindex;
  28.     FILE *areasfile;
  29.     FILE *filesbbsfile = NULL;
  30.  
  31.     char name[255];
  32.  
  33.     char indexfname[80];
  34.     char filesbbsname[80];
  35.     char dirname[80];
  36.     char areadesc[80];
  37.     char areaname[15];
  38.  
  39.     char buf[512];
  40.     char tmps[512];
  41.  
  42.     long totdirs = 0;
  43.  
  44.     char *p, *r;
  45.  
  46.     printf("╔═════════════════════════════════════════════════════════════════╕\n");
  47.     printf("║                                                                 │\n");
  48.     printf("║                   ««« Maximus CDROM Mount »»»                  │\n");
  49.     printf("║                                                                 │\n");
  50.     printf("║ Creates Files.Bbs files and Hcdareas.Ctl from indexfiles on the │\n");
  51.     printf("║ CD-ROM from Walnut Creek CD-ROM.                                │\n");
  52.     printf("║                                                                 │\n");
  53.     printf("║ (C) Copyright 1993 Koos van den Hout /                          │\n");
  54.     printf("║                            Van den Hout Creative Communications │\n");
  55.     printf("║ (C) copy right 1993 Walnut Creek CDROM                          │\n");
  56.     printf("║ This program is Freeware. Feel free to share the executable /   │\n");
  57.     printf("║ source with anyone. Read MaxHmnt.Doc for license.               │\n");
  58.     printf("║                                                                 │\n");
  59.     printf("╙─────────────────────────────────────────────────────────────────┘\n\n");
  60.  
  61.     if (argc < 3) {
  62.         printf("Usage :\n\n");
  63.         printf("MAX <CD-ROMdrive> <Directory for FILES.BBS files> [starting area number]\n\n");
  64.         printf("Example:\n");
  65.         printf("MAX G: C:\\MAX\\CDAREAS\n");
  66.         printf("MAX G: C:\\MAX\\CDAREAS 100\n\n");
  67.         printf("Read MAXHMNT.DOC for more info.\n");
  68.         exit(1);
  69.     }
  70.     strupr(argv[1]);
  71.     strupr(argv[2]);
  72.  
  73.     if (argc == 4) {
  74.         if (0 == (totdirs = atoi(argv[3]))) {
  75.             fprintf(stderr, "''%s'' is not a starting area number\n", argv[3]);
  76.             exit(1);
  77.         }
  78.         --totdirs;
  79.     }
  80.  
  81.     strcpy(indexfname, argv[1]);
  82.     strcat(indexfname, "\\_bbs\\dirs.txt");
  83.  
  84.     if ((dosindex = fopen(indexfname, "rt")) == NULL) {
  85.         printf("Can't open index file %s\n", indexfname);
  86.         exit(1);
  87.     }
  88.     if ((areasfile = fopen("HCDAREAS.CTL", "wt")) == NULL) {
  89.         printf("Can't write area file\n");
  90.         exit(1);
  91.     }
  92.     
  93.     fprintf(areasfile, "% Areas file of Walnut Creek CDROM.\n");
  94.     fprintf(areasfile, "% Created by Max\n\n");
  95.     while (NULL != fgets(buf, 512, dosindex)) {
  96.  
  97.         buf[strlen(buf) - 1] = 0;
  98.  
  99.         if (0 == strlen(buf))
  100.             continue;
  101.         
  102.         if (0 == strncmp(buf, "---", 3))
  103.             break;
  104.  
  105.         p = strchr(buf, ' ');
  106.         r = strchr(buf, '\t');
  107.         if (r && r < p)
  108.             p = r;
  109.         *p = 0;
  110.         strcpy(dirname, buf);
  111.         if (dirname[strlen(dirname) - 1] == '\\')
  112.             dirname[strlen(dirname) - 1] = '\0';
  113.         *p = ' ';
  114.         while (isspace(*p))
  115.             ++p;
  116.  
  117.         /* p now at description */
  118.                 
  119.         ++totdirs;
  120.  
  121.         strcpy(areadesc, p);
  122.  
  123.         sprintf(areaname, "HC%03li", totdirs);
  124.         strupr(areaname);
  125.  
  126.         printf("[%03li] %s%s >> %s\n",
  127.                   totdirs, argv[1], dirname, areadesc);
  128.  
  129.         strcpy(filesbbsname, argv[2]);
  130.  
  131.         if (filesbbsname[strlen(filesbbsname) - 1] != '\\')
  132.             strcat(filesbbsname, "\\");
  133.         
  134.         sprintf(tmps, "HC%03li.BBS", totdirs);
  135.         strcat(filesbbsname, tmps);
  136.  
  137.         sprintf(buf, "copy %s%s\\files.bbs %s", argv[1], dirname, filesbbsname);
  138.  
  139.         fprintf(stderr, "executing ``copy %s\\files.bbs %s''\n",
  140.                   dirname, filesbbsname);
  141.  
  142.         system(buf);
  143.  
  144.         fprintf(areasfile, "Area %s\n", areaname);
  145.         fprintf(areasfile, "        Access           Disgrace/S\n");
  146.         fprintf(areasfile, "        FileInfo         %s\n", areadesc);
  147.         fprintf(areasfile, "        Download         %s%s\n", argv[1], dirname);
  148.         fprintf(areasfile, "        FileList         %s\n", filesbbsname);
  149.         fprintf(areasfile, "End Area\n\n");
  150.     }
  151.  
  152.     fclose(filesbbsfile);
  153.     fclose(areasfile);
  154.     fclose(dosindex);
  155. }
  156.