X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=restore%2Finteractive.c;h=0bd6aaa6d7bc6f367c20e21a83f182b88de9003e;hb=0d7af9c5f2cc7d4a97e934692ea8665e09fd5500;hp=24cf18cd5727025a07f5ba3494565ebfc5df587f;hpb=ec387a1267f4cac7625cd5b6d1c1f080d39085b3;p=dump.git diff --git a/restore/interactive.c b/restore/interactive.c index 24cf18c..0bd6aaa 100644 --- a/restore/interactive.c +++ b/restore/interactive.c @@ -2,8 +2,7 @@ * Ported to Linux's Second Extended File System as part of the * dump and restore backup suit * Remy Card , 1994-1997 - * Stelian Pop , 1999 - * + * Stelian Pop , 1999-2000 */ /* @@ -37,10 +36,13 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $Id: interactive.c,v 1.5 1999/10/11 13:31:12 stelian Exp $ */ +#ifndef lint +static const char rcsid[] = + "$Id: interactive.c,v 1.9 2000/02/26 01:35:48 stelian Exp $"; +#endif /* not lint */ + #include #include @@ -77,7 +79,7 @@ extern char * __progname; static int runshell; static jmp_buf reset; static char *nextarg = NULL; - +static int pflag = 0; /* prompt mode */ /* * Structure and routines associated with listing directories. */ @@ -201,7 +203,7 @@ loop: if (strncmp(cmd, "help", strlen(cmd)) != 0) goto bad; case '?': - fprintf(stderr, "%s%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%s", "Available commands are:\n", "\tls [arg] - list directory\n", "\tcd arg - change directory\n", @@ -216,6 +218,7 @@ loop: "\twhat - list dump header information\n", "\tverbose - toggle verbose flag", " (useful with ``ls'')\n", + "\tprompt - toggle the prompt display\n", "\thelp or `?' - print this list\n", "If no `arg' is supplied, the current", " directory is used\n"); @@ -232,12 +235,26 @@ loop: * Print current directory. */ case 'p': - if (strncmp(cmd, "pwd", strlen(cmd)) != 0) - goto bad; - if (curdir[1] == '\0') - fprintf(stderr, "/\n"); - else - fprintf(stderr, "%s\n", &curdir[1]); + if (strncmp(cmd, "pwd", strlen(cmd)) == 0) { + if (curdir[1] == '\0') + fprintf(stderr, "/\n"); + else + fprintf(stderr, "%s\n", &curdir[1]); + } + /* + * Toggle prompt mode. + */ + else if (strncmp(cmd, "prompt", strlen(cmd)) == 0) { + if (pflag) { + fprintf(stderr, "prompt mode off\n"); + pflag = 0; + break; + } + fprintf(stderr, "prompt mode on\n"); + pflag++; + break; + } + else goto bad; break; /* * Quit. @@ -335,7 +352,13 @@ getcmd(char *curdir, char *cmd, char *name, int size, struct arglist *ap) * Read a command line and trim off trailing white space. */ do { - fprintf(stderr, "%s > ", __progname); + if (pflag) + fprintf(stderr, "%s:%s:%s > ", + __progname, + spcl.c_filesys, + curdir[1] ? &curdir[1] : "/"); + else + fprintf(stderr, "%s > ", __progname); (void) fflush(stderr); (void) fgets(input, BUFSIZ, terminal); } while (!feof(terminal) && input[0] == '\n'); @@ -688,7 +711,7 @@ formatf(struct afile *list, int nentry) for (j = 0; j < columns; j++) { fp = &list[j * lines + i]; if (vflag) { - fprintf(stderr, "%*ld ", precision, fp->fnum); + fprintf(stderr, "%*ld ", precision, (long)fp->fnum); fp->len += precision + 1; } if (haveprefix) {