出  处: cs3.xmu.edu.cn
 
  在UNIX版上前一阵有好心人[email protected],  [email protected]等将台湾BBS精华区取到本地 做GB转换,广为传播等,我后来从ftp://202.114.2.3上取了 一份,并放在ftp://cs3.xmu.edu.cn/pub/collect/bbs/twbbs 下,解开一看,是Maple BBS的.DIR格式,不能在FB BBS 上观看,今天花了一上午时间编了一程序,专门转换所有.DIR 到.Names,算是我也出点力气。:-)
  (附程序源码, 也可以到 ftp://cs3.xmu.edu.cn/pub/collect/linux/bbs/DIR2Name.tgz取)
 
  /*----------------------------------------------------------------------*/ /* DIR2Name.c                                                           */ /*                                                                      */ /*            (ftp://cs3.xmu.edu.cn/pub/collect/linux/bbs/DIR2Name.tgz  */ /*    (Comments, I love comments!)                                      */ /*    Program by [email protected]                                 */ /*    date: Dec 26, 1997                                                */ /*                                                                      */ /*    This program intend to convert Maple BBS .DIR                     */ /*    to FireBird BBS .Names format.                                    */ /*    For anybody who is SYSOP of FireBird BBS and                      */ /*    want to convert .DIR to .Names                                    */ /*                                                                      */ /*    Syntax: DIR2Name pathname                                         */ /*    Sample: DIR2Name . > .Names                                       */ /*                                                                      */ /*    I bundle a shell program name as "superDIR2Name"                  */ /*    with DIR2Name.c, just put DIR2Name&superDIR2Name                  */ /*    in /usr/local/bin. And directly run superDIR2Name                 */ /*    under the root dir of Maple man directory, you                    */ /*    can convert whole directory to FB .Names format.                  */ /*                                                                      */ /*            any problem contact [email protected], THX                */ /*----------------------------------------------------------------------*/
 
  #include <sys/file.h> #include <sys/stat.h> #include <time.h> #include <dirent.h> #include <string.h>
  #define FNLEN 33  /* Length of filename  */ #define IDLEN   12             /* Length of bid/uid */ #define TTLEN    72            /* Length of title */
  typedef unsigned char uschar;  /* length = 1 */
  struct DIRfh  /* .DIR File Header format */ {   char filename[FNLEN];         /* M.9876543210.A */   char savemode;                /* file save mode */   char owner[IDLEN + 2];        /* uid[.] */   char date[6];                 /* [02/02] or space(5) */   char title[TTLEN + 1];   uschar filemode;              /* must be last field @ boards.c */ };
  /*  * usage:       DIR2Name path  *  * compile:     gcc -o DIR2Name DIR2Name.c  */
  main(argc, argv)   int argc;   char *argv[]; {   char t_dir[30];
    int fin;   struct stat st;
    int i, total;   int insize;   char *iptr, *key, *hit;   struct DIRfh fh0;
    time_t filetime;   struct tm *ptime;
    if (argc < 2 || argc > 3)   {     printf("Usage:\t%s path\n", argv[0]);     exit(-1);   }
    getcwd(t_dir, 29);   chdir(argv[1]);
    insize = sizeof(struct DIRfh);   iptr = (char *) &fh0;   key = &(fh0.filename[2]);
    if ((fin = open(".DIR", O_RDONLY)) == -1)   {     printf(".DIR open error\n");     exit(-1);   }
    fstat(fin, &st);
    /* read original .DIR */
    i = 0;
    printf("#\n");   printf("# Title=\n");   printf("#\n");   while (read(fin, iptr, insize) == insize)   {         printf("Name=%s\n", fh0.title);         printf("Path=~/%s\n", fh0.filename);         printf("Numb=%d\n", ++i);         printf("#\n");
    }   close(fin);   chdir(t_dir);   }
  -- ※ 来源:·古庙钟声 cs3.xmu.edu.cn·[FROM: :).xmu.edu.cn]
  | 
 
 
 |