home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1997-1999, Acme Software Inc, Stenløse, Denmark */
- /* All Rights Reserved. */
-
- char *progversion="$VER:DefSys 2.04 (28.12.99)";
-
- #include <stdio.h>
- #include <proto/dos.h>
- #include <string.h>
-
- #define MODE_KS 0
- #define MODE_WB 1
- #define WB mode==1
-
- int main(int argc,char** argv)
- {
-
- const char *fail="DefSys Failure: ", *no_arg="required argument missing\n", *wrong_arg="wrong number of arguments\n";
- char *dir, argument[256], arg1[256], arg2[4], arg3=0;
- long error;
- int mode;
- BPTR lock, mainlock;
-
- mode=MODE_WB;
- arg1[0]=0;
- arg2[0]=0;
-
- switch(argc)
- {
- case 1:
- printf("%s%s",fail,no_arg);
- return 5;
-
- case 2:
- if (argv[1][0]=='?')
- {
- printf("DIR,WB/S,KS/S: ");
- scanf("%[^\n]",argument);
- sscanf(argument,"%s%3s%c",arg1,arg2,&arg3);
- if (arg3)
- {
- printf("%s%s",fail,wrong_arg);
- return 5;
- }
- if (arg1[0]==0)
- {
- printf("%s%s",fail,no_arg);
- return 5;
- }
- dir=arg1;
- if (arg2[0])
- {
- if (!stricmp(arg2,"KS")) mode=MODE_KS;
- else if (stricmp(arg2,"WB"))
- {
- printf("%s%s",fail,wrong_arg);
- return 5;
- }
- }
- }
- else dir=argv[1];
- break;
-
- case 3:
- if (!stricmp(argv[2],"KS")) mode=MODE_KS;
- else if (stricmp(argv[2],"WB"))
- {
- printf("%s%s",fail,wrong_arg);
- return 5;
- }
- dir=argv[1];
- break;
-
- default:
- printf("%s%s",fail,wrong_arg);
- return 5;
- }
- mainlock=Lock(dir,ACCESS_READ);
- error=IoErr();
- if (error)
- {
- printf("Could not get information for %s\n",dir);
- if (error==ERROR_DEVICE_NOT_MOUNTED) printf("device (or volume) is not mounted\n");
- else printf("object not found\n");
- return 5;
- }
-
- AssignLock("ENVARC",0);
- AssignLock("KEYMAPS",0);
- AssignLock("PRINTERS",0);
- AssignLock("HELP",0);
- AssignLock("LOCALE",0);
- AssignLock("REXX",0);
- AssignLock("LIBS",0);
- AssignLock("DEVS",0);
- AssignLock("FONTS",0);
- AssignLock("L",0);
- AssignLock("C",0);
- AssignLock("S",0);
- AssignLock("SYS",0);
-
- AssignLock("SYS",mainlock);
- AssignLate("ENVARC","sys:prefs/env-archive");
-
- lock=Lock("SYS:C",ACCESS_READ);
- if (lock) AssignLock("C",lock);
- else AssignLock("C",mainlock);
-
- lock=Lock("SYS:S",ACCESS_READ);
- if (lock)
- {
- AssignLock("S",lock);
- if (WB) AssignLock("REXX",lock);
- }
- else AssignLock("S",mainlock);
-
- lock=Lock("SYS:Devs",ACCESS_READ);
- if (lock) AssignLock("DEVS",lock);
- else AssignLock("DEVS",mainlock);
-
- lock=Lock("SYS:L",ACCESS_READ);
- if (lock) AssignLock("L",lock);
- else
- {
- if (WB) AssignLate("L","Extras3.1:L");
- else AssignLock("L",mainlock);
- }
-
- lock=Lock("SYS:Fonts",ACCESS_READ);
- if (lock) AssignLock("FONTS",lock);
- else if (!WB) AssignLock("FONTS",mainlock);
-
- lock=Lock("SYS:Libs",ACCESS_READ);
- if (lock) AssignLock("LIBS",lock);
- else AssignLock("LIBS",mainlock);
-
- if (WB)
- {
- lock=Lock("SYS:Classes",ACCESS_READ);
- if (lock) AssignAdd("LIBS",lock);
-
- lock=Lock("DEVS:Keymaps",ACCESS_READ);
- if (lock) AssignLock("KEYMAPS",lock);
-
- lock=Lock("DEVS:Printers",ACCESS_READ);
- if (lock) AssignLock("PRINTERS",lock);
-
- lock=Lock("SYS:Locale",ACCESS_READ);
- if (lock) AssignLock("LOCALE",lock);
-
- AssignLate("HELP","LOCALE:Help");
- }
- return 0;
- }