home *** CD-ROM | disk | FTP | other *** search
- ;/* Arename v1.0 Mark Weller (c)2000
- ; execute to compile -*- DICE -*-
- dcc -o Arename Arename.c
- quit
- */
-
- #include <exec/types.h>
- #include <dos/dos.h>
- #include <sys/dir.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- #define AAH_PROGRAM "Arename v1.0 - Mark Weller (c)2000"
- #define AAH_MAXPATH 255
- #define AAH_MAXFILE 31
- #define AAH_ON 1
- #define AAH_OFF 0
- #define AAH_EXT 2
-
-
- char *extension_types[] =
- {
- "scp","SCP",""
- };
-
- int IsFileValid(char *,char *,int);
- int IsDir(char *,char *);
- void Usage(char *);
-
-
- main(int argc,char *argv[])
- {
-
- DIR *dirp;
- struct direct *dp;
- char *name;
-
- char full_new[AAH_MAXFILE];
- char full_old[AAH_MAXFILE];
- char scp_path[AAH_MAXPATH];
- char rcp_path[AAH_MAXPATH];
-
- int fname_cnt = 0;
- int temp_cnt = 0;
- char *fname = 0;
- char *exten = 0;
- char *usr_ext = 0;
-
- FILE *lren; /*-rename script -*/
- FILE *oren; /*-orig_rename script-*/
-
- /*-command line switches-*/
- int v_switch = AAH_OFF; /*-verbose-*/
- int e_switch = AAH_OFF; /*- by chosen exstension-*/
-
- full_new[0] = '\0';
- full_old[0] = '\0';
- scp_path[0] = '\0'; /*-undo-*/
- rcp_path[0] = '\0'; /*-rename-*/
-
- switch(argc)
- {
- case 6 :
- case 5 : if(argv[1][0] == '-')
- {
- for(temp_cnt = 0;temp_cnt != strlen(argv[1]);temp_cnt++)
- {
- switch(argv[1][temp_cnt])
- {
- case '-' : break;
- case 'v' : v_switch = AAH_ON; break;
- case 'e' : if(argc == 6)
- { e_switch = AAH_ON;
- usr_ext = argv[5];
- }
- else { Usage(NULL); }
-
- }
- }
-
- name = argv[2];
- }
- else
- {
- Usage(NULL);
- }
- fname = argv[3];
- exten = argv[4];
- break;
- case 4: name = argv[1];
- fname = argv[2];
- exten = argv[3];
- break;
- case 1 : Usage(NULL); break;
- }
-
- /*-open rename file (script)-*/
- sprintf(full_old,"%s",name);
- if(full_old[strlen(full_old) -1] == ':')
- { sprintf(rcp_path,"%sAren%s.scp",name,exten); }
- else { sprintf(rcp_path,"%s/Aren%s.scp",name,exten); }
-
- if(!(lren = fopen(rcp_path,"w")))
- { Usage("ERR: Can not create rename script file ?"); }
-
-
- /*-open undo file (script)-*/
- sprintf(full_old,"%s",name);
- if(full_old[strlen(full_old) -1] == ':')
- { sprintf(scp_path,"%sAund%s.scp",name,exten); }
- else { sprintf(scp_path,"%s/Aund%s.scp",name,exten); }
-
- if(!(oren = fopen(scp_path,"w")))
- { fclose(lren); Usage("ERR: Can not create undo script file ?"); }
- full_old[0] = '\0';
-
- fprintf(lren,";Rename Script Created by Arename - Mark Weller (c)2000\n");
- fprintf(oren,";Undo Script Created by Arename - Mark Weller (c)2000\n");
- /*-open directory-*/
-
- if ((dirp = opendir(name)) == NULL) {
- Usage("Can't open directory ?");
- }
-
- if(v_switch == AAH_ON)
- {
- printf("------------------------------------------------\n");
- printf("%s\n",AAH_PROGRAM);
- printf("------------------------------------------------\n");
- printf("Directory : %s\n",name);
- if(e_switch == AAH_ON)
- printf("User Extension : %s\n",usr_ext);
- }
-
-
- for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
- {
- if(IsDir(name,dp->d_name) == 1) /*-Not Sub Directory-*/
- {
- if(IsFileValid(dp->d_name,usr_ext,e_switch) == 1)
- {
- sprintf(full_new,"%s%04d.%s",fname,fname_cnt,exten);
- fprintf(lren,"rename %s %s\n",dp->d_name,full_new);
- fprintf(oren,"rename %s %s\n",full_new,dp->d_name);
-
- if(v_switch == AAH_ON)
- {
- printf("%-35.35s -> %-35.35s\n",dp->d_name,full_new);
- }
- fname_cnt++;
- }
- else
- {
- /*-script file-*/
- if(v_switch == AAH_ON)
- { printf("%-35.35s = %-35.35s\n",dp->d_name,"Skipped File Not Valid"); }
- }
- }
- else
- {
- /*-sub directory-*/
-
- if(v_switch == AAH_ON)
- {
- printf("%-35.35s = %-35.35s\n",dp->d_name,"Skipped Sub Directory");
- }
-
- }
- }
-
- closedir(dirp);
-
- if(v_switch == AAH_ON)
- printf("Rename Script Created : %s\n",rcp_path);
- printf("Undo Script Created : %s\n",scp_path);
- printf("------------------------------------------------\n");
-
-
- if(lren) fclose(lren);
- if(oren) fclose(lren);
- exit(0);
- }
-
- void Usage(char *mess)
- {
- printf("----------------------------------------\n");
-
- if(mess)
- {
- printf("%s\n",AAH_PROGRAM);
- printf("-----------------------------------------------------------\n");
- printf("mess:%s\n",mess);
- printf("---------------------------------------------------------\n");
- }
- else
- {
- printf("%s\n",AAH_PROGRAM);
- printf("Creates Amiga dos scripts to Rename & Undo files\n");
- printf("-----------------------------------------------------------\n");
- printf("USAGE: Arename <-ve> [directory] [name] [ext] <user ext>\n");
- printf(" switches: -\n");
- printf(" v = verbose - displays output\n");
- printf(" e = only files with given extension\n");
- printf(" directory = containing files to rename\n");
- printf(" name = new file name \n");
- printf(" ext = extension for new filename\n");
- printf(" user ext = only files with this extension (use with -e)\n\n");
- printf("example: Arename -v Work:pics holiday jpg\n");
- printf(" this will rename all files in the chosen");
- printf(" directory to:\n");
- printf(" holiday0000.jpg,holiday0001.jpg,...holiday0023.jpg\n");
- printf("example: Arename -v Work:pics %c%c img\n",0x22,0x22);
- printf(" this will rename all files in the chosen");
- printf(" directory to:\n");
- printf(" 0000.img,0001.img,0002.img,0003.img,...0023.img\n");
- printf("example: Arename -v Work:pics caves img jpg\n");
- printf(" this will rename all files in the chosen\n");
- printf(" directory with the extension jpg to:");
- printf(" caves0000.img,...caves0023.img\n");
- printf("-----------------------------------------------------------\n");
- printf("See Arename.readme for more information.\n");
- printf("-----------------------------------------------------------\n");
- }
- exit(0);
- }
-
-
-
- IsFileValid(char *fname,char *usr_ext,int e_switch)
- {
- char temp_name[31];
- char ext_buff[31];
- int name_length = 0;
- int len_cnt = 0;
- int ext_cnt = 0;
- int check = 0;
- int result = 1;
-
- temp_name[0] = '\0';
- ext_buff[0] = '\0';
-
- strcpy(temp_name,fname);
- name_length = strlen(temp_name);
-
- /*--get file extension--*/
- for(len_cnt = 0;len_cnt != name_length;len_cnt++)
- {
- if(temp_name[len_cnt] == '.') /*-extension start-*/
- {
- if(check == 1) /*-reset because file must 'my.file.???'-*/
- {
- ext_buff[0] = '\0';
- ext_cnt = 0;
- }
- else
- {
- check = 1;
- }
- }
- else
- {
- if(check == 1) /* copy extension */
- {
- ext_buff[ext_cnt] = temp_name[len_cnt];
- ext_cnt++;
- }
- }
- }
- ext_buff[ext_cnt] = '\0';
-
- /*-check invalid extensions array (.scp in this program)-*/
- ext_cnt = 0;
- for(ext_cnt = 0;ext_cnt != AAH_EXT;ext_cnt++)
- {
- if(strcmp(ext_buff,extension_types[ext_cnt]) == 0)
- result = 0;
- }
- /*- user defined extension - if result = 1 not a script (.scp)-*/
- if(result == 1 && e_switch == AAH_ON)
- {
- if(strcmp(ext_buff,usr_ext) == 0)
- result = 1; /*-user defined extension-*/
- else result = 0; /*-invalid another file-*/
- }
-
- return(result);
- }
-
-
- int IsDir(char *dname,char *fname)
- {
- struct stat load_stat;
- char gfile_buff[255];
- int tmp_size = 0;
-
- gfile_buff[0]='\0';
- strcpy(gfile_buff,dname);
- tmp_size = strlen(gfile_buff);
-
- if(gfile_buff[tmp_size - 1] == ':')
- {
- strcat(gfile_buff,fname);
- }
- else
- {
- strcat(gfile_buff,"/");
- strcat(gfile_buff,fname);
- }
-
- stat(gfile_buff,&load_stat);
-
- if(S_ISDIR(load_stat.st_mode) != 0)
- return(0);
- else
- return(1);
- }
-
-
-
-