restruct.c
上传用户:minyiyu
上传日期:2018-12-24
资源大小:864k
文件大小:4k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. /*
  2.     restruct:  If you want to use the new struct.h instead of struct.h.old,
  3.     follow these instructions...
  4.     
  5.     1. gcc restruct.c ../record.c -o restruct
  6.     2. cp /home/bbs/.PASSWDS PASSWDS
  7.     3. restruct
  8.     4. cp PASSWDS.new /home/bbs/.PASSWDS
  9.     5. recompile and reinstall innbbsd/innd/bbspost
  10.     6. recompile and reinstall bbspop3d, bbstop, bfinger, ...
  11.     If you choose to mv struct.h.old to struct.h, then you don't have to
  12.     worry about this and no need to run this program.
  13. */    
  14. #include "bbs.h"
  15. report()
  16. {
  17. }
  18. struct olduserec {                  /* Structure used to hold information in */
  19.         char            userid[IDLEN+2];   /* PASSFILE */
  20.         char            fill[30];
  21.         time_t          firstlogin;
  22.         char            lasthost[16];
  23.         unsigned int    numlogins;
  24.         unsigned int    numposts;
  25.         char            flags[2];
  26.         char            passwd[PASSLEN];
  27.         char            username[NAMELEN];
  28.         char            ident[NAMELEN];
  29.         char            termtype[STRLEN];
  30.         unsigned        userlevel;
  31.         time_t          lastlogin;
  32.         time_t          stay;
  33.         char            realname[NAMELEN];
  34.         char            address[STRLEN];
  35.         char            email[STRLEN];
  36.         int             signature;
  37.         unsigned int    userdefine;
  38.         time_t          notedate;
  39.         int             noteline;
  40.         int             notemode;
  41.         int             unuse1;/* no use*/
  42.         int             unuse2;/* no use*/
  43. };
  44. struct newuserec {                  /* Structure used to hold information in */
  45.         char            userid[IDLEN+2];   /* PASSFILE */
  46.         time_t          firstlogin;
  47.         char            lasthost[16];
  48.         unsigned int    numlogins;
  49.         unsigned int    numposts;
  50.         char            flags[2];
  51.         char            passwd[PASSLEN];
  52.         char            username[NAMELEN];
  53.         char            ident[NAMELEN];
  54.         char            termtype[16];
  55.         char            reginfo[64];
  56.         unsigned int    userlevel;
  57.         time_t          lastlogin;
  58.         time_t          stay;
  59.         char            realname[NAMELEN];
  60.         char            address[STRLEN];
  61.         char            email[STRLEN];
  62.         int             signature;
  63.         unsigned int    userdefine;
  64.         time_t          notedate;
  65.         int             noteline;
  66. };
  67. main()
  68. {
  69.     struct olduserec fh;
  70.     struct newuserec nfh;
  71.     char fname[80];
  72.     char dname[80];
  73.     char genbuf[120];
  74.     FILE *fp, *fp2;
  75.     memset(&fh,0,sizeof(struct olduserec));
  76.     memset(&nfh,0,sizeof(struct newuserec));
  77.     printf("old record size: %dnnew record size: %dn",sizeof(struct newuserec),sizeof(struct olduserec));
  78.     sprintf( fname, "PASSWDS");
  79.     sprintf( dname, "PASSWDS.new");
  80.     if ((fp = fopen(fname, "rb")) == NULL) {
  81.         printf("Error: Cannot open PASSWDS.n");
  82.         return 0;
  83.     }
  84.     if ((fp2 = fopen(dname, "wb")) == NULL) {
  85.         printf("Error: Cannot write to PASSWDS.new.n");
  86.         return 0;
  87.     }
  88.     while(1)
  89.     {
  90.       if(fread(&fh,sizeof(fh),1,fp)<=0) break;    
  91.       strcpy(nfh.userid,fh.userid);
  92.       nfh.firstlogin = fh.firstlogin;
  93.       strcpy(nfh.lasthost,fh.lasthost);
  94.       nfh.numlogins = fh.numlogins;
  95.       nfh.numposts = fh.numposts;
  96.       strcpy(nfh.flags,fh.flags);
  97.       strcpy(nfh.passwd,fh.passwd);
  98.       strcpy(nfh.username,fh.username);
  99.       strcpy(nfh.ident,fh.ident);
  100.       strcpy(nfh.termtype,fh.termtype);
  101.       strcpy(nfh.reginfo,fh.termtype+16);
  102.       nfh.userlevel = fh.userlevel;
  103.       nfh.lastlogin = fh.lastlogin;
  104.       nfh.stay = fh.stay;
  105.       strcpy(nfh.realname,fh.realname);
  106.       strcpy(nfh.address,fh.address);
  107.       strcpy(nfh.email,fh.email);
  108.       nfh.signature = fh.signature;
  109.       nfh.userdefine = fh.userdefine;
  110.       nfh.notedate = fh.notedate;
  111.       nfh.noteline = fh.noteline;
  112.       append_record(dname,&nfh,sizeof(nfh));
  113.     }
  114.     fclose(fp);
  115.     fclose(fp2);
  116.     return 1;
  117. }