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); 
}