- }
- break;
-
- case 'q': /* Quit */
- fprintf(msg_file,"No new volume; exiting.\n");
- if(cmd_mode!=CMD_EXTRACT && cmd_mode!=CMD_LIST && cmd_mode!=CMD_DIFF)
- msg("Warning: Archive is INCOMPLETE!");
- exit(EX_BADARCH);
-
- case 'n': /* Get new file name */
- {
- char *q,*r;
- static char *old_name;
-
- for(q= &inbuf[1];*q==' ' || *q=='\t';q++)
- ;
- for(r=q;*r;r++)
- if(*r=='\n')
- *r='\0';
- if(old_name)
- free(old_name);
- old_name=p=(char *)malloc((unsigned)(strlen(q)+2));
- if(p==0) {
- msg("Can't allocate memory for name");
- exit(EX_SYSTEM);
- }
- (void) strcpy(p,q);
- ar_file=p;
- }
- break;
-
- case '!':
-#ifdef __MSDOS__
- spawnl(P_WAIT,getenv("COMSPEC"),"-",0);
-#else
- /* JF this needs work! */
- switch(fork()) {
- case -1:
- msg_perror("can't fork!");
- break;
- case 0:
- p=getenv("SHELL");
- if(p==0) p="/bin/sh";
- execlp(p,"-sh","-i",0);
- msg_perror("can't exec a shell %s",p);
- _exit(55);
- default:
- wait(0);
- break;
- }
-#endif
- break;
- }
+ }
+ break;
+
+ case 'q': /* Quit */
+ fprintf(msg_file,"No new volume; exiting.\n");
+ if(cmd_mode!=CMD_EXTRACT && cmd_mode!=CMD_LIST && cmd_mode!=CMD_DIFF)
+ msg("Warning: Archive is INCOMPLETE!");
+ exit(EX_BADARCH);
+
+ case 'n': /* Get new file name */
+ {
+ char *q,*r;
+ static char *old_name;
+
+ for(q= &inbuf[1];*q==' ' || *q=='\t';q++)
+ ;
+ for(r=q;*r;r++)
+ if(*r=='\n')
+ *r='\0';
+ old_name=p=(char *)malloc((unsigned)(strlen(q)+2));
+ if(p==0) {
+ msg("Can't allocate memory for name");
+ exit(EX_SYSTEM);
+ }
+ (void) strcpy(p,q);
+ ar_files[cur_ar_file]=p;
+ }
+ break;
+
+ case '!':
+ #ifdef __MSDOS__
+ spawnl(P_WAIT,getenv("COMSPEC"),"-",0);
+ #else
+ /* JF this needs work! */
+ switch(fork()) {
+ case -1:
+ msg_perror("can't fork!");
+ break;
+ case 0:
+ p=getenv("SHELL");
+ if(p==0) p="/bin/sh";
+ execlp(p,"-sh","-i",0);
+ msg_perror("can't exec a shell %s",p);
+ _exit(55);
+ default:
+ wait(0);
+ break;
+ }
+ #endif
+ break;
+ }
+ }