home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / hpt2_028.zip / fc2fleet.c < prev    next >
C/C++ Source or Header  |  1999-07-02  |  3KB  |  136 lines

  1. /*
  2. FidoConfig to FleetStreet's AREAS.INI converter V0.03
  3. Copyright 1999 Oleg Deribas 2:461/13@fidonet
  4.  
  5. To compile with emx 0.9d:
  6. gcc.exe -s -Zomf -Zcrtdll -Wall -o fc2fleet.exe -I../fidoconfig -I../smapi -L../fidoconfig -L../smapi fc2fleet.c -lsmapi -lfidoconfig -lwrap
  7.  
  8. */
  9.  
  10. #define INCL_WINSHELLDATA
  11. #include <os2.h>
  12. #include <stdio.h>
  13. #include "fidoconfig.h"
  14.  
  15. #define TYPE_ECHO    "\0"
  16. #define TYPE_NETMAIL "\1"
  17. #define TYPE_LOCAL   "\2"
  18.  
  19. #define FMT_MSG    "\1"
  20. #define FMT_SQUISH "\2"
  21. #define FMT_JAM    "\3"
  22.  
  23. s_fidoconfig *config;
  24. char *UserName = NULL;
  25.  
  26. int writeArea(HINI hini, s_area *area, char *type)
  27. {
  28.     char tmp[255];
  29.     ULONG PrfSize = 4;
  30. //    BOOL rc;
  31.  
  32.     sprintf(tmp, "%u:%u/%u.%u",
  33.         area->useAka->zone,
  34.         area->useAka->net,
  35.         area->useAka->node,
  36.         area->useAka->point);
  37.  
  38.     PrfWriteProfileString(hini, area->areaName, "Address", tmp);
  39.     if (UserName == NULL)
  40.     {
  41.         PrfWriteProfileString(hini, area->areaName, "Name", config->sysop);
  42.     }
  43.     else
  44.     {
  45.         PrfWriteProfileString(hini, area->areaName, "Name", UserName);
  46.     }
  47.     if ( area->description != NULL )
  48.     {
  49.         PrfWriteProfileString(hini, area->areaName, "Desc", area->description);
  50.     }
  51.     else
  52.     {
  53.         PrfWriteProfileString(hini, area->areaName, "Desc", area->areaName);
  54.     }
  55.     PrfWriteProfileString(hini, area->areaName, "Path", area->fileName);
  56.     PrfWriteProfileData  (hini, area->areaName, "Type", type, 2);
  57.  
  58.     if (area->msgbType == MSGTYPE_SQUISH)
  59.     {
  60.         PrfWriteProfileData(hini, area->areaName, "Format", FMT_SQUISH, 2);
  61.     }
  62.     else
  63.     {
  64.         PrfWriteProfileData(hini, area->areaName, "Format", FMT_MSG, 2);
  65.     }
  66.     
  67.     if ( !PrfQueryProfileData(hini, area->areaName, "Options", (PVOID) tmp, &PrfSize) )
  68.     {
  69.         memset(tmp, 0, 4);
  70.     }
  71.     tmp[0] |= 8;
  72.     PrfWriteProfileData(hini, area->areaName, "Options", tmp, 4);
  73.  
  74.     return 0;
  75. }
  76.  
  77.  
  78. int main (int argc, char *argv[]) 
  79. {
  80.     HAB hab;
  81.     HINI hini;
  82.     int i;
  83.     s_area *area;
  84.  
  85.     printf("FidoConfig to FleetStreet's AREAS.INI converter V0.03\n");
  86.     printf("Copyright 1999 Oleg Deribas 2:461/13@fidonet\n\n");
  87.  
  88.     config = readConfig();
  89.     if (config!= NULL) 
  90.     {
  91.         if ( argc >1 )
  92.         {
  93.             if (argv[1][1] == '?')
  94.             {
  95.                 printf("Usage: fc2fleet.exe [\"User Name\"]\n\n");
  96.                 exit(0);
  97.             }
  98.             else
  99.             {
  100.                 UserName = (char *) malloc(sizeof(argv[1]));
  101.                 strcpy(UserName,argv[1]);
  102.             }
  103.         }
  104.         hab = WinInitialize(0);
  105.         if ((hini = PrfOpenProfile(hab, "AREAS.INI")) == NULLHANDLE)
  106.         {
  107.             /* File was not opened or created */
  108.             printf("Error opening AREAS.INI\n");
  109.             return 1;
  110.         }
  111.         
  112.         writeArea(hini, &(config->netMailArea), TYPE_NETMAIL);
  113.         writeArea(hini, &(config->dupeArea), TYPE_LOCAL);
  114.         writeArea(hini, &(config->badArea), TYPE_LOCAL);
  115.  
  116.         for (i=0; i<config->echoAreaCount; i++) 
  117.         {
  118.             area = &(config->echoAreas[i]);
  119.             if (area->msgbType != MSGTYPE_PASSTHROUGH)
  120.                 writeArea(hini, area, TYPE_ECHO);
  121.         }
  122.  
  123.         for (i=0; i<config->localAreaCount; i++)
  124.         {
  125.             area = &(config->localAreas[i]);
  126.             writeArea(hini, area, TYPE_LOCAL);
  127.         }
  128.  
  129.         PrfCloseProfile(hini);
  130.         disposeConfig(config);
  131.         return 0;
  132.     }
  133.     printf("Error opening Config-file\n");
  134.     return 1;
  135. }
  136.