SCCS-vsn: sbin/restore/interactive.c 5.4
-static char sccsid[] = "@(#)interactive.c 5.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)interactive.c 5.4 (Berkeley) %G%";
#endif not lint
#include "restore.h"
#endif not lint
#include "restore.h"
* Add elements to the extraction list.
*/
case 'a':
* Add elements to the extraction list.
*/
case 'a':
+ if (strncmp(cmd, "add", strlen(cmd)) != 0)
+ goto bad;
ino = dirlookup(name);
if (ino == 0)
break;
ino = dirlookup(name);
if (ino == 0)
break;
* Change working directory.
*/
case 'c':
* Change working directory.
*/
case 'c':
+ if (strncmp(cmd, "cd", strlen(cmd)) != 0)
+ goto bad;
ino = dirlookup(name);
if (ino == 0)
break;
ino = dirlookup(name);
if (ino == 0)
break;
* Delete elements from the extraction list.
*/
case 'd':
* Delete elements from the extraction list.
*/
case 'd':
+ if (strncmp(cmd, "delete", strlen(cmd)) != 0)
+ goto bad;
np = lookupname(name);
if (np == NIL || (np->e_flags & NEW) == 0) {
fprintf(stderr, "%s: not on extraction list\n", name);
np = lookupname(name);
if (np == NIL || (np->e_flags & NEW) == 0) {
fprintf(stderr, "%s: not on extraction list\n", name);
* Extract the requested list.
*/
case 'e':
* Extract the requested list.
*/
case 'e':
+ if (strncmp(cmd, "extract", strlen(cmd)) != 0)
+ goto bad;
createfiles();
createlinks();
setdirmodes();
createfiles();
createlinks();
setdirmodes();
* List available commands.
*/
case 'h':
* List available commands.
*/
case 'h':
+ if (strncmp(cmd, "help", strlen(cmd)) != 0)
+ goto bad;
- fprintf(stderr, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ fprintf(stderr, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
"Available commands are:\n",
"\tls [arg] - list directory\n",
"\tcd arg - change directory\n",
"Available commands are:\n",
"\tls [arg] - list directory\n",
"\tcd arg - change directory\n",
"\textract - extract requested files\n",
"\tsetmodes - set modes of requested directories\n",
"\tquit - immediately exit program\n",
"\textract - extract requested files\n",
"\tsetmodes - set modes of requested directories\n",
"\tquit - immediately exit program\n",
+ "\twhat - list dump header information\n",
"\tverbose - toggle verbose flag",
" (useful with ``ls'')\n",
"\thelp or `?' - print this list\n",
"\tverbose - toggle verbose flag",
" (useful with ``ls'')\n",
"\thelp or `?' - print this list\n",
* List a directory.
*/
case 'l':
* List a directory.
*/
case 'l':
+ if (strncmp(cmd, "ls", strlen(cmd)) != 0)
+ goto bad;
ino = dirlookup(name);
if (ino == 0)
break;
ino = dirlookup(name);
if (ino == 0)
break;
* Print current directory.
*/
case 'p':
* Print current directory.
*/
case 'p':
+ if (strncmp(cmd, "pwd", strlen(cmd)) != 0)
+ goto bad;
if (curdir[1] == '\0')
fprintf(stderr, "/\n");
else
if (curdir[1] == '\0')
fprintf(stderr, "/\n");
else
+ if (strncmp(cmd, "quit", strlen(cmd)) != 0)
+ goto bad;
+ return;
+ if (strncmp(cmd, "xit", strlen(cmd)) != 0)
+ goto bad;
return;
/*
* Toggle verbose mode.
*/
case 'v':
return;
/*
* Toggle verbose mode.
*/
case 'v':
+ if (strncmp(cmd, "verbose", strlen(cmd)) != 0)
+ goto bad;
if (vflag) {
fprintf(stderr, "verbose mode off\n");
vflag = 0;
if (vflag) {
fprintf(stderr, "verbose mode off\n");
vflag = 0;
* Just restore requested directory modes.
*/
case 's':
* Just restore requested directory modes.
*/
case 's':
+ if (strncmp(cmd, "setmodes", strlen(cmd)) != 0)
+ goto bad;
+ /*
+ * Print out dump header information.
+ */
+ case 'w':
+ if (strncmp(cmd, "what", strlen(cmd)) != 0)
+ goto bad;
+ printdumpinfo();
+ break;
/*
* Turn on debugging.
*/
case 'D':
/*
* Turn on debugging.
*/
case 'D':
+ if (strncmp(cmd, "Debug", strlen(cmd)) != 0)
+ goto bad;
if (dflag) {
fprintf(stderr, "debugging mode off\n");
dflag = 0;
if (dflag) {
fprintf(stderr, "debugging mode off\n");
dflag = 0;
* Unknown command.
*/
default:
* Unknown command.
*/
default:
fprintf(stderr, "%s: unknown command; type ? for help\n", cmd);
break;
}
fprintf(stderr, "%s: unknown command; type ? for help\n", cmd);
break;
}