home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / varie / defsys / defsys.c next >
Encoding:
C/C++ Source or Header  |  1999-12-28  |  3.0 KB  |  153 lines

  1. /* Copyright (c) 1997-1999, Acme Software Inc, Stenløse, Denmark */
  2. /* All Rights Reserved. */
  3.  
  4. char *progversion="$VER:DefSys 2.04 (28.12.99)";
  5.  
  6. #include <stdio.h>
  7. #include <proto/dos.h>
  8. #include <string.h>
  9.  
  10. #define MODE_KS 0
  11. #define MODE_WB 1
  12. #define WB mode==1
  13.  
  14. int main(int argc,char** argv)
  15. {
  16.  
  17.     const char    *fail="DefSys Failure: ", *no_arg="required argument missing\n", *wrong_arg="wrong number of arguments\n";
  18.     char        *dir, argument[256], arg1[256], arg2[4], arg3=0;
  19.     long        error;
  20.     int        mode;
  21.     BPTR        lock, mainlock;
  22.  
  23.     mode=MODE_WB;
  24.     arg1[0]=0;
  25.     arg2[0]=0;
  26.  
  27.     switch(argc)
  28.     {
  29.         case 1:
  30.         printf("%s%s",fail,no_arg);
  31.         return 5;
  32.  
  33.         case 2:
  34.         if (argv[1][0]=='?')
  35.         {
  36.             printf("DIR,WB/S,KS/S: ");
  37.             scanf("%[^\n]",argument);
  38.             sscanf(argument,"%s%3s%c",arg1,arg2,&arg3);
  39.             if (arg3)
  40.             {
  41.                 printf("%s%s",fail,wrong_arg);
  42.                 return 5;
  43.             }
  44.             if (arg1[0]==0)
  45.             {
  46.                 printf("%s%s",fail,no_arg);
  47.                 return 5;
  48.             }
  49.             dir=arg1;
  50.             if (arg2[0])
  51.             {
  52.                 if (!stricmp(arg2,"KS")) mode=MODE_KS;
  53.                 else if (stricmp(arg2,"WB"))
  54.                 {
  55.                     printf("%s%s",fail,wrong_arg);
  56.                     return 5;
  57.                 }
  58.             }
  59.         }
  60.         else dir=argv[1];
  61.         break;
  62.  
  63.         case 3:
  64.         if (!stricmp(argv[2],"KS")) mode=MODE_KS;
  65.         else if (stricmp(argv[2],"WB"))
  66.         {
  67.             printf("%s%s",fail,wrong_arg);
  68.             return 5;
  69.         }
  70.         dir=argv[1];
  71.         break;
  72.  
  73.         default:
  74.         printf("%s%s",fail,wrong_arg);
  75.         return 5;
  76.     }
  77.     mainlock=Lock(dir,ACCESS_READ);
  78.     error=IoErr();
  79.     if (error)
  80.     {
  81.         printf("Could not get information for %s\n",dir);
  82.         if (error==ERROR_DEVICE_NOT_MOUNTED) printf("device (or volume) is not mounted\n");
  83.         else printf("object not found\n");
  84.         return 5;
  85.     }
  86.  
  87.     AssignLock("ENVARC",0);
  88.     AssignLock("KEYMAPS",0);
  89.     AssignLock("PRINTERS",0);
  90.     AssignLock("HELP",0);
  91.     AssignLock("LOCALE",0);
  92.     AssignLock("REXX",0);
  93.     AssignLock("LIBS",0);
  94.     AssignLock("DEVS",0);
  95.     AssignLock("FONTS",0);
  96.     AssignLock("L",0);
  97.     AssignLock("C",0);
  98.     AssignLock("S",0);
  99.     AssignLock("SYS",0);
  100.  
  101.     AssignLock("SYS",mainlock);
  102.     AssignLate("ENVARC","sys:prefs/env-archive");
  103.  
  104.     lock=Lock("SYS:C",ACCESS_READ);
  105.     if (lock) AssignLock("C",lock);
  106.     else AssignLock("C",mainlock);
  107.  
  108.     lock=Lock("SYS:S",ACCESS_READ);
  109.     if (lock)
  110.     {
  111.         AssignLock("S",lock);
  112.         if (WB) AssignLock("REXX",lock);
  113.     }
  114.     else AssignLock("S",mainlock);
  115.  
  116.     lock=Lock("SYS:Devs",ACCESS_READ);
  117.     if (lock) AssignLock("DEVS",lock);
  118.     else AssignLock("DEVS",mainlock);
  119.  
  120.     lock=Lock("SYS:L",ACCESS_READ);
  121.     if (lock) AssignLock("L",lock);
  122.     else
  123.     {
  124.         if (WB) AssignLate("L","Extras3.1:L");
  125.         else AssignLock("L",mainlock);
  126.     }
  127.  
  128.     lock=Lock("SYS:Fonts",ACCESS_READ);
  129.     if (lock) AssignLock("FONTS",lock);
  130.     else if (!WB) AssignLock("FONTS",mainlock);
  131.  
  132.     lock=Lock("SYS:Libs",ACCESS_READ);
  133.     if (lock) AssignLock("LIBS",lock);
  134.     else AssignLock("LIBS",mainlock);
  135.  
  136.     if (WB)
  137.     {
  138.         lock=Lock("SYS:Classes",ACCESS_READ);
  139.         if (lock) AssignAdd("LIBS",lock);
  140.  
  141.         lock=Lock("DEVS:Keymaps",ACCESS_READ);
  142.         if (lock) AssignLock("KEYMAPS",lock);
  143.  
  144.         lock=Lock("DEVS:Printers",ACCESS_READ);
  145.         if (lock) AssignLock("PRINTERS",lock);
  146.  
  147.         lock=Lock("SYS:Locale",ACCESS_READ);
  148.         if (lock) AssignLock("LOCALE",lock);
  149.  
  150.         AssignLate("HELP","LOCALE:Help");
  151.     }
  152.     return 0;
  153. }