+ if (!globulize(&argv[2]))
+ return;
+ recvrequest("RETR", argv[2], argv[1], "w");
+}
+
+/*
+ * Get multiple files.
+ */
+mget(argc, argv)
+ char *argv[];
+{
+ char *cp;
+
+ if (argc < 2) {
+ strcat(line, " ");
+ printf("(remote-files) ");
+ gets(&line[strlen(line)]);
+ makeargv();
+ argc = margc;
+ argv = margv;
+ }
+ if (argc < 2) {
+ printf("%s remote-files\n", argv[0]);
+ return;
+ }
+ while ((cp = remglob(argc, argv)) != NULL)
+ if (confirm(argv[0], cp))
+ recvrequest("RETR", cp, cp, "w");
+}
+
+char *
+remglob(argc, argv)
+ char *argv[];
+{
+ char temp[16];
+ static char buf[MAXPATHLEN];
+ static FILE *ftemp = NULL;
+ static char **args;
+ int oldverbose, oldhash;
+ char *cp, *mode;
+
+ if (!doglob) {
+ if (args == NULL)
+ args = argv;
+ if ((cp = *++args) == NULL)
+ args = NULL;
+ return (cp);
+ }
+ if (ftemp == NULL) {
+ strcpy(temp, "/tmp/ftpXXXXXX");
+ mktemp(temp);
+ oldverbose = verbose, verbose = 0;
+ oldhash = hash, hash = 0;
+ for (mode = "w"; *++argv != NULL; mode = "a")
+ recvrequest ("NLST", temp, *argv, mode);
+ verbose = oldverbose; hash = oldhash;
+ ftemp = fopen(temp, "r");
+ unlink(temp);
+ if (ftemp == NULL) {
+ printf("can't find list of remote files, oops\n");
+ return (NULL);
+ }
+ }
+ if (fgets(buf, sizeof (buf), ftemp) == NULL) {
+ fclose(ftemp), ftemp = NULL;
+ return (NULL);
+ }
+ if ((cp = index(buf, '\n')) != NULL)
+ *cp = '\0';
+ return (buf);