home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 1995 December / SOFM_Dec1995.bin / pc / os2 / adeptbbs / adeptins.dat / RATOADEPT.C next >
C/C++ Source or Header  |  1994-10-21  |  17KB  |  524 lines

  1. #include <stdio.h>
  2. #include <os2.h>
  3. #include <io.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <stdarg.h>
  7. #include <fcntl.h>
  8. #include <share.h>
  9.  
  10.  
  11. #define bit   unsigned
  12. #define sword signed short
  13. #define word  unsigned short
  14. #define dword long
  15. #define byte  unsigned char
  16.  
  17. #define RA_DELETED        0x00000001
  18. #define RA_CLRSCRN        0x00000002
  19. #define RA_MORE           0x00000004
  20. #define RA_ANSI           0x00000008
  21. #define RA_NOKIL          0x00000010
  22. #define RA_XFERWHAT       0x00000020
  23. #define RA_FSE            0x00000040
  24. #define RA_QUIET          0x00000080
  25.  
  26. #define RA_HOTKEYS        0x00000001
  27. #define RA_AVATAR         0x00000002
  28. #define RA_FSMV           0x00000004
  29. #define RA_HIDDEN         0x00000008
  30. #define RA_PAGEPRI        0x00000010
  31. #define RA_NOECHO         0x00000020
  32. #define RA_GUEST          0x00000040
  33. #define RA_BILL           0x00000080
  34.  
  35. /* user[cp]->attribs */
  36.  
  37. #define U_ANSI            0x00000001
  38. #define U_COLOR           0x00000002
  39. #define U_HIGHASCII       0x00000004
  40. #define U_NOMORE          0x00000008
  41. #define U_NOCLEAR         0x00000010
  42. #define U_COLD            0x00000020
  43. #define U_NOSHOWADDRESS   0x00000040
  44. #define U_NOSHOWPHONE     0x00000080
  45. #define U_NOSHOWREAL      0x00000100
  46. #define U_NOKILL          0x00000200
  47. #define U_DELETED         0x00000400
  48. #define U_EXPERT          0x00000800
  49. #define U_TWIT            0x00001000
  50. #define U_NEWFILES        0x00002000
  51. #define U_NEWMSGS         0x00004000
  52. #define U_DLNEWMSGS       0x00008000
  53. #define U_DLNEWFILELIST   0x00010000
  54. #define U_SEENEWS         0x00020000
  55. #define U_ASKDL           0x00040000
  56. #define U_NOVICE          0x00080000
  57. #define U_NOROLL          0x00100000
  58. #define U_POINTONLY       0x00200000
  59. #define U_LOCKEDOUT       0x00400000
  60. #define U_AVAILABLE       0x00800000
  61. #define U_LISTPROTECTED   0x01000000
  62. #define U_MISCNEWSOK      0x02000000
  63. #define U_LIMITFLIST      0x04000000
  64. #define U_EBCDIC          0x08000000
  65. #define U_VERIFIED        0x10000000  // user call back verified, turn this off, they get
  66.                                       // verified again.. (if BBS verifies)
  67. #define U_ANSITE2         0x20000000
  68. #define U_RIPSCRIPT       0x40000000
  69. #define U_AVATAR          0x80000000
  70.  
  71. /* user[cp]->attribs2*/
  72.  
  73. #define U2_FSE            0x00000001
  74. #define U2_OFF_AFTER_MAIL 0x00000002
  75. #define U2_MONITOR_MAIL   0x00000004
  76. #define U2_INT_NEW_FILES  0x00000008
  77. #define U2_INC_BULLETS    0x00000010
  78. #define U2_INC_WELCOME    0x00000020
  79. #define U2_DEFAULT_QWK    0x00000040
  80. #define U2_DEFAULT_FIDO   0x00000080
  81. #define U2_DEFAULT_TEXT   0x00000100
  82. #define U2_DEFAULT_BLUE   0x00000200
  83. #define U2_AVTANS         0x00000400
  84. #define U2_8DOT3          0x00000800
  85.  
  86. typedef struct _ra_users
  87. {
  88.         char            ll1;
  89.         char            name[35];
  90.         char            l1;
  91.         char            location[25];
  92.         char            l2;
  93.         char            organization[50];
  94.         char            l3;
  95.         char            address1[50];
  96.         char            l4;
  97.         char            address2[50];
  98.         char            l5;
  99.         char            address3[50];
  100.         char            l6;
  101.         char            handle[35];
  102.         char            l7;
  103.         char            comment[80];
  104. //        long int        passwordcrc;
  105.         long            passwordcrc;
  106.         char            l8;
  107.         char            dataphone[15];
  108.         char            l9;
  109.         char            voicephone[15];
  110.         char            ll2;
  111.         char            Time[5];
  112.         char            ll3;
  113.         char            Date[8];
  114.         char            attribute;
  115. /*
  116.                       { Bit 0 : Deleted
  117.                             1 : Clear screen
  118.                             2 : More prompt
  119.                             3 : ANSI
  120.                             4 : No-kill
  121.                             5 : Xfer priority
  122.                             6 : Full screen msg editor
  123.                             7 : Quiet mode }
  124. */
  125.         char            Attribute2;
  126. /*
  127.                       { Bit 0 : Hot-keys
  128.                             1 : AVT/0
  129.                             2 : Full screen message viewer
  130.                             3 : Hidden from userlist
  131.                             4 : Page priority
  132.                             5 : No echomail in mailbox scan
  133.                             6 : Guest account
  134.                             7 : Post bill enabled }
  135. */
  136.         char            flagshuh[4];
  137.         long            credit;
  138.         long            pending;
  139.         short           msgsposted;
  140.         short           security;
  141.         long            lastread;
  142.         long            nocalls;
  143.         long            uploads;
  144.         long            downloads;
  145.         long            uploadsk;
  146.         long            downloadsk;
  147.         long            todayk;
  148.         short           elapsed;
  149.         short           screenlength;
  150.         char            lastpwdchange;
  151.         short           group;
  152.         short           combinedinfo[200];
  153.         char            ll4;
  154.         char            firstdate[8];
  155.         char            ll5;
  156.         char            birthdate[8];
  157.         char            ll6;
  158.         char            subdate[8];
  159.         char            screenwidth;
  160.         char            language;
  161.         char            dateformat;
  162.         char            l10;
  163.         char            forwardto[35];
  164.         short           msgarea;
  165.         short           filearea;
  166.         char            defualtprot;
  167.         short           filegroup;
  168.         char            lastdobcheck;
  169.         char            sex;
  170.         long            XIrecord;
  171.         short           msggroup;
  172.         char            freespace[48];
  173. } RAUSER, *PRAUSER;
  174.  
  175. typedef struct _user_info
  176. {
  177.     UCHAR       name[36];
  178.     UCHAR       handle[36];
  179.     UCHAR       address[60];
  180.     UCHAR       address1[60];
  181.     UCHAR       address2[60];
  182.     UCHAR       city[20];
  183.     UCHAR       state[5];
  184.     UCHAR       zipcode[10];
  185.     UCHAR       home_phone[21];
  186.     UCHAR       data_phone[21];
  187.     UCHAR       fax_phone[21];
  188.     UCHAR       bus_phone[21];
  189.     UCHAR       interests[78];
  190.     UCHAR       SysOpComment[78];
  191.     USHORT      BankTime;
  192.     USHORT      computer_type;
  193.     ULONG       userid;
  194.     USHORT      pointid;
  195.     time_t      initial_logon;
  196.     time_t      expires;
  197.     time_t      last_logon;
  198.     time_t      logon_today;
  199.     USHORT      birthyear;
  200.     UCHAR       birthmonth;
  201.     UCHAR       birthday;
  202.     UCHAR       Gender;
  203.     LONG        credit;
  204.     LONG        minlimit;
  205.     LONG        Group;           // must match Group->Number
  206.     ULONG       CurrLastRead;    // last Read for current msg area
  207.     ULONG       time_today;      // seconds used today
  208.     ULONG       time_per_day;    // minutes allowed per day
  209.     ULONG       time_per_call;   // minutes per call  0=just per day
  210.     ULONG       numcalls;
  211.     ULONG       ulnum;           // files uploaded (ever)
  212.     ULONG       dlnum;           // files downloaded (ever)
  213.     ULONG       ulk;             // UL in K (ever)
  214.     ULONG       dlk;             // DL in K (ever)
  215.     ULONG       uktoday;         // UL in K Today 
  216.     ULONG       dktoday;         // DL in K Today
  217.     ULONG       ukperday;        // Max UL K Per day
  218.     ULONG       dkperday;        // Max DL K Per day
  219.     ULONG       numposts;
  220.     ULONG       security1;
  221.     ULONG       security2;
  222.     ULONG       flags1;
  223.     ULONG       flags2;
  224.     ULONG       attribs;
  225.     ULONG       attribs2;    
  226.     USHORT      length;
  227.     USHORT      width;
  228.     USHORT      lastmsgarea;
  229.     USHORT      lastfilearea;
  230.     UCHAR       lastprotocol;
  231.     UCHAR       lastarchiver;
  232.     LONG        forsysop;
  233.     UCHAR       interface;
  234.     UCHAR       exp;
  235.     USHORT      leech_percent;
  236.     USHORT      MaxBankTime;
  237.     SHORT       TimeCredit;    // can be negative or positive
  238.     SHORT       CallsToday;
  239.     LONG        TotalMinsEver;
  240.     LONG        NetmailDebits;
  241.     time_t      LastPWChange;
  242.     time_t      LastListedNewFiles;
  243.     UCHAR       _Unused[106];
  244.     UCHAR       OfflineMailTags[128];
  245.     UCHAR       usermsg[128];
  246.     UCHAR       userfile[128];
  247.     ULONG       PasswordCRC;
  248.     ULONG       PasswordCRC2;
  249.     USHORT      Max_Mail_Pkt;
  250.     CHAR        ReAsked;      // TRUE if reasked question were answered
  251.     char        Reserved[75];
  252.  
  253. } USER, *PUSER;
  254.  
  255. long  crc32str(char *str);
  256.  
  257. long cr3tab[] =
  258. {
  259.           /* CRC polynomial 0xEDB88320 */
  260.  
  261.     0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
  262.     0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
  263.     0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
  264.     0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
  265.     0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
  266.     0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
  267.     0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
  268.     0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
  269.     0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
  270.     0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
  271.     0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
  272.     0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
  273.     0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
  274.     0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
  275.     0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
  276.     0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
  277.     0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
  278.     0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
  279.     0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
  280.     0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
  281.     0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
  282.     0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
  283.     0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
  284.     0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
  285.     0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
  286.     0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
  287.     0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
  288.     0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
  289.     0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
  290.     0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
  291.     0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
  292.     0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
  293.     0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
  294.     0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
  295.     0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
  296.     0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
  297.     0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
  298.     0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
  299.     0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
  300.     0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
  301.     0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
  302.     0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
  303.     0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
  304.     0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
  305.     0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
  306.     0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
  307.     0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
  308.     0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
  309.     0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
  310.     0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
  311.     0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
  312.     0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
  313.     0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
  314.     0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
  315.     0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
  316.     0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
  317.     0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
  318.     0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
  319.     0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
  320.     0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
  321.     0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
  322.     0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
  323.     0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
  324.     0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
  325. };
  326.  
  327.  
  328. main()
  329. {
  330.     int RaFileHandle = 0;
  331.     int AdeptFileHandle = 0;
  332.     RAUSER RaUser;
  333.     USER AdeptUser;
  334.     int RaUserStructSize;
  335.     struct stat buf;
  336.     int x;
  337.     int NumUsers;
  338.     long Rafileloc;
  339.     long adeptfileloc;
  340.  
  341.     printf("Really stupid and dumb Ra to Adept user converter\r\n");
  342.  
  343.     RaFileHandle = open("users.bbs", O_RDONLY | O_BINARY);
  344.  
  345.     AdeptFileHandle = open("Users", O_WRONLY | O_BINARY | O_CREAT);
  346.  
  347.     if(RaFileHandle == -1)
  348.     {
  349.         printf("user.bbs not accessable\r\n");
  350.         return;
  351.     }
  352.  
  353.     lseek(RaFileHandle, 0, SEEK_SET);
  354.  
  355.     fstat(RaFileHandle, &buf);
  356.  
  357.     NumUsers = buf.st_size / sizeof(RAUSER);
  358.  
  359.     printf("Num Users = %d\r\n", NumUsers);
  360.  
  361.     for(x = 1; x <= NumUsers; x++)
  362.     {
  363.         read(RaFileHandle, &RaUser, sizeof(RAUSER));
  364.  
  365.         Rafileloc = x * sizeof(RAUSER);
  366.  
  367.         lseek(RaFileHandle, Rafileloc, SEEK_SET);
  368.  
  369.         strncpy(AdeptUser.name, RaUser.name, RaUser.ll1);
  370.         strncpy(AdeptUser.handle, RaUser.handle, RaUser.l6);
  371.         strncpy(AdeptUser.city, RaUser.location, RaUser.l1);
  372.         strncpy(AdeptUser.interests, RaUser.organization, RaUser.l2);
  373.         strncpy(AdeptUser.address, RaUser.address1, RaUser.l3);
  374.         strncpy(AdeptUser.address1, RaUser.address2, RaUser.l4);
  375.         strncpy(AdeptUser.address2, RaUser.address3, RaUser.l5);
  376.         strncpy(AdeptUser.SysOpComment, RaUser.comment, RaUser.l7);
  377.         strncpy(AdeptUser.home_phone, RaUser.voicephone, RaUser.l9);
  378.         strncpy(AdeptUser.data_phone, RaUser.dataphone, RaUser.l8);
  379.  
  380.         AdeptUser.credit = RaUser.credit;
  381.  
  382.         AdeptUser.security1 = RaUser.security;
  383.         AdeptUser.numcalls = RaUser.nocalls;
  384.  
  385.         AdeptUser.ulnum = RaUser.uploads;
  386.         AdeptUser.dlnum = RaUser.downloads;
  387.  
  388.         AdeptUser.ulk = RaUser.uploadsk;
  389.         AdeptUser.dlk = RaUser.downloadsk;
  390.  
  391.         AdeptUser.dktoday = RaUser.todayk;
  392.  
  393.         AdeptUser.length = RaUser.screenlength;
  394.  
  395.         AdeptUser.width = 80;
  396.  
  397.         AdeptUser.PasswordCRC = RaUser.passwordcrc;
  398.  
  399.         AdeptUser.PasswordCRC2 = 0;
  400.  
  401.         AdeptUser.time_per_day = 45;
  402.  
  403.         if(RaUser.attribute & RA_ANSI)
  404.         {
  405.             AdeptUser.attribs |= U_ANSI;
  406.             AdeptUser.attribs |= U_COLOR;
  407.             AdeptUser.attribs |= U_HIGHASCII;
  408.         }
  409.         else if(RaUser.attribute & RA_AVATAR)
  410.         {
  411.             AdeptUser.attribs |= U_AVATAR;
  412.             AdeptUser.attribs |= U_COLOR;
  413.             AdeptUser.attribs |= U_HIGHASCII;
  414.         } else {
  415.             AdeptUser.attribs |= U_HIGHASCII;
  416.         }
  417.  
  418.         memset(AdeptUser.usermsg, 255, 128);
  419.         memset(AdeptUser.userfile, 255, 128);
  420.  
  421. //        if(MaxUser.priv == TWIT)
  422. //        {
  423. //            AdeptUser.security1 = 5;
  424. //        }
  425. //        else if(MaxUser.priv == DISGRACE)
  426. //        {
  427. //            AdeptUser.security1 = 10;
  428. //        }
  429. //        else if(MaxUser.priv == LIMITED)
  430. //        {
  431. //            AdeptUser.security1 = 20;
  432. //        }
  433. //        else if(MaxUser.priv == NORMAL)
  434. //        {
  435. //            AdeptUser.security1 = 30;
  436. //        }
  437. //        else if(MaxUser.priv == WORTHY)
  438. //        {
  439. //            AdeptUser.security1 = 40;
  440. //        }
  441. //        else if(MaxUser.priv == PRIVIL)
  442. //        {
  443. //            AdeptUser.security1 = 50;
  444. //        }
  445. //        else if(MaxUser.priv == FAVORED)
  446. //        {
  447. //            AdeptUser.security1 = 60;
  448. //        }
  449. //        else if(MaxUser.priv == EXTRA)
  450. //        {
  451. //            AdeptUser.security1 = 70;
  452. //        }
  453. //        else if(MaxUser.priv == CLERK)
  454. //        {
  455. //            AdeptUser.security1 = 80;
  456. //        }
  457. //        else if(MaxUser.priv == ASSTSYSOP)
  458. //        {
  459. //            AdeptUser.security1 = 90;
  460. //        }
  461. //        else if(MaxUser.priv == SYSOP)
  462. //        {
  463. //            AdeptUser.security1 = 100;
  464. //        }
  465. //        else {
  466. //            AdeptUser.security1 = 10;
  467. //        }
  468. //
  469. //        if(!(MaxUser.bits & BITS_HOTKEYS))
  470. //        {
  471. //            AdeptUser.attribs |= U_COLD;
  472. //        }
  473. //
  474. //        if(!(MaxUser.bits & BITS_NOTAVAIL))
  475. //        {
  476. //            AdeptUser.attribs |= U_AVAILABLE;
  477. //        }
  478. //
  479. //        if(MaxUser.bits & BITS_NOULIST)
  480. //        {
  481. //            AdeptUser.attribs |= U_LISTPROTECTED;
  482. //        }
  483. //
  484. //        if(MaxUser.bits2 & BITS2_IBMCHARS)
  485. //        {
  486. //            AdeptUser.attribs |= U_HIGHASCII;
  487. //        }
  488. //
  489. //        if(!(MaxUser.bits2 & BITS2_BORED))
  490. //        {
  491. //            AdeptUser.attribs2 |= U2_FSE;
  492. //        }
  493. //
  494. //        if(!(MaxUser.bits2 & BITS2_MORE))
  495. //        {
  496. //            AdeptUser.attribs |= U_NOMORE;
  497. //        }
  498. //
  499.         printf("Converting user = %s\r\n", AdeptUser.name);
  500.  
  501.         write(AdeptFileHandle, &AdeptUser, sizeof(USER));
  502.  
  503.         memset(&AdeptUser, 0, sizeof(USER));
  504.         memset(&RaUser, 0, sizeof(RAUSER));
  505.     }
  506.     close(RaFileHandle);
  507.     close(AdeptFileHandle);
  508.  
  509. }
  510.  
  511. long  crc32str(char *str)
  512. {
  513.     long crc = -1L;
  514.  
  515.     while (*str)
  516.     {
  517.         crc = cr3tab[((int) crc ^ toupper(*str)) & 0xff] ^ ((crc >> 8) & 0x00FFFFFF);
  518.         str++;
  519.     }
  520.     return crc;
  521. }
  522.  
  523.  
  524.