www.pudn.com > tftp.rar > UTILS.C
/* ** This product contains: ** "Restricted Materials of IBM" ** (c) Copyright IBM Corp. 1987 ** All Rights Reserved ** Licensed Materials-Property of IBM ** ** See Copyright Instructions, G120-2083 ** */ #include#include #include #include #include #include #include #include #include #include #include #include #include "tftpdefs.h" extern char *sys_errlist[]; extern int errno; static unsigned tftpnum = 1; /*------------------------------------------------------------------------*/ char *p_getlocal (buffer) char *buffer; { char *fn; printf ("(local file) "); gets(buffer); SkipWhite (buffer); if (*buffer == '\0') return (NULL); else if (access(buffer,A_READ) != 0) { printf ("Unable to access '%s': %s\n",buffer,sys_errlist[errno]); p_getlocal (buffer); } else return (buffer); } /*------------------------------------------------------------------------*/ char *g_getlocal (buffer,foreign) char *buffer; char *foreign; { printf ("(local file [%s]) ",foreign); gets (buffer); SkipWhite (buffer); if (*buffer == '\0') strcpy(buffer,foreign); if (g_local_ok(buffer)) return (buffer); else return (NULL); } /*------------------------------------------------------------------------*/ g_local_ok (file) char *file; { int rc,len; char *answer; if (access (file,0) == 0 && !(conn.flags & F_CLOBBER)) { printf ("File '%s' exists, overwrite? ",file); if ((answer = malloc(COMMANDLEN)) == NULL) { perror (_whoami); exit (8); } gets (answer); SkipWhite (answer); len = strlen(strlwr(answer)); if (strncmp(answer,"yes",len) != 0) rc = 0; else rc = 1; free (answer); } else rc = 1; return (rc); } /*------------------------------------------------------------------------*/ char *getforeign (buffer) char *buffer; { char *fn; printf ("(foreign file) "); gets (buffer); SkipWhite (buffer); if (*buffer == '\0') return (NULL); else return (buffer); } /*------------------------------------------------------------------------*/ int tfprint (host, file, dir) in_name host; char *file; int dir; { if (conn.flags & F_VERBOSE) { printf("TFTP #%u\n", tftpnum++); printf("Transferring file %s %s %a\n", file, (dir == D_PUT) ? "to" : "from" , host); } return (1); } /*------------------------------------------------------------------------*/ void tfdone (success) int success; { if (conn.flags & F_VERBOSE) if (success) printf("Successful transfer.\n"); else printf("Transfer failed.\n"); return; } /*------------------------------------------------------------------------*/ void usage () { printf ("\n"); message (_version,VERS,NULL); use(); printf ("\n\tOptions -\n"); printf ("\t\t-g get a file from the remote host (for batch mode)\n"); printf ("\t\t-p put a file to the remote host (for batch mode)\n"); printf ("\t\t-a use ascii mode for transfer\n"); printf ("\t\t-b use binary (image) mode for transfer\n"); printf ("\t\t-t toggle trace flag (default Off)\n"); printf ("\t\t-s enter Serve mode\n"); printf ("\t\t-v toggle verbose flag (default On)\n"); printf ("\t\t-z toggle write DOS EOF mark flag (default On)\n"); printf ("\t\t-? display this message\n"); } /*------------------------------------------------------------------------*/ void use () { printf ("\nUsage: %s [-g|-p|get|put] localfile host foreignfile [image|ascii]\n",_whoami); printf (" -- or --\n"); printf (" %s [-abtsvgpz?] [host]\n",_whoami); }