diff options
| author | Pavel Vymetálek <pavel@vym.cz> | 2019-02-18 15:43:11 +0100 | 
|---|---|---|
| committer | Pavel Vymetálek <pavel@vym.cz> | 2019-02-18 15:43:11 +0100 | 
| commit | 763b0e4a17aad661705ed333f57cb989b5ac31c3 (patch) | |
| tree | 2cbd04cd147ac301a6dd51909cc40f9d300e1edc | |
| parent | fb473ed61d28c2de73bcb729168ad9427fc4c631 (diff) | |
| download | sercp-pc-763b0e4a17aad661705ed333f57cb989b5ac31c3.tar.gz | |
Přidáno zkrácení názvu souboru když je delší než 8.3
- berou se první 4 znaky a posledních 8 znaků - .ext + 4 poslední znaky názvu
| -rw-r--r-- | sercp.c | 40 | 
1 files changed, 26 insertions, 14 deletions
| @@ -11,6 +11,7 @@  #include <sys/stat.h>  #include <sys/ioctl.h>  #include <sys/signal.h> +#include <signal.h>  #include <fcntl.h>  #include <poll.h> @@ -28,7 +29,7 @@ int baud_rate = 0;  int wait_us = 200;  int wait_ms	= 800;  char *path; -char tap_file[FILENAME_MAX]; +char sercp_file[FILENAME_MAX];  unsigned char buff[32768];  unsigned char *p_buff;  unsigned int is_continue = 1; @@ -127,7 +128,7 @@ void TestArgs (int argc, char *argv[])  	}  	if (optind < argc) {  		while (optind < argc){ -			strncpy (&tap_file[0], argv[optind++], 63);		// input tap file name - without option switch +			strncpy (&sercp_file[0], argv[optind++], 63);		// input file name or path - without option switch  		}  	}  } @@ -367,6 +368,8 @@ void RecvSCP(void) {  void SendSCP(void) {  	FILE *tap_fd;  	char *bname, *basec;			// pinter na kopii nazvu souboru - basename +	char *shortfilename; +	size_t fn_len;  	unsigned int err, no, len;  	struct stat st;  	FILEINFO *p_fileinfo = &fileinfo; @@ -379,13 +382,13 @@ void SendSCP(void) {  	uint32_t overall_sent; -	no = stat(tap_file, &st); +	no = stat(sercp_file, &st);  	if (no != 0) {  		err = errno;  		error(1, err, "can't stat input file");  	} -	tap_fd = fopen(tap_file, "r"); +	tap_fd = fopen(sercp_file, "r");  	if (tap_fd == NULL)	{  		err = errno;  		error(1, err, "can't open input file"); @@ -394,11 +397,20 @@ void SendSCP(void) {  		printf ("Zero length of file. End\n");  		return;  	} -	printf ("File %s, length: %ld\n", tap_file, st.st_size); +	printf ("File %s, length: %ld\n", sercp_file, st.st_size);  	memset (p_fileinfo, 0, sizeof(fileinfo));		// smazat fileinfo -	basec = strdup (tap_file); +	basec = strdup (sercp_file);  	bname = basename (basec); +	if (strlen(bname) > 12) { +		printf ("Short filename: "); +		shortfilename = strdup(bname); +		fn_len = strlen(shortfilename); +		memcpy(shortfilename+4, shortfilename+fn_len-8, 8); +		*(shortfilename+12) = 0; +		printf ("%s\n", shortfilename); +		bname = shortfilename; +	}  	memcpy(p_fileinfo->fi_name, bname, strlen(bname));  	file_len = (uint32_t) st.st_size; @@ -472,30 +484,30 @@ int main(int argc, char** argv, char** env)  	tcgetattr(serial_fd, &oldtio); /* save current port settings */  	switch (baud_rate){  		case 115200: -			newtio.c_cflag = B115200 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B115200 | CS8 | CLOCAL | CREAD;  			break;  		case 57600: -			newtio.c_cflag = B57600 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B57600 | CS8 | CLOCAL | CREAD;  			break;  		default:  			baud_rate = 38400;  		case 38400: -			newtio.c_cflag = B38400 | CS8 | CLOCAL | CREAD | CRTSCTS;	// dva stopbity jsou nastaveny vsude, ale tady ne +			newtio.c_cflag = B38400 | CS8 | CLOCAL | CREAD;	// dva stopbity jsou nastaveny vsude, ale tady ne  			break;  		case 19200: -			newtio.c_cflag = B19200 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B19200 | CS8 | CLOCAL | CREAD;  			break;  		case 9600: -			newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;  			break;  		case 4800: -			newtio.c_cflag = B4800 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B4800 | CS8 | CLOCAL | CREAD;  			break;  		case 2400: -			newtio.c_cflag = B2400 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B2400 | CS8 | CLOCAL | CREAD;  			break;  		case 1200: -			newtio.c_cflag = B1200 | CS8 | CLOCAL | CREAD | CRTSCTS; +			newtio.c_cflag = B1200 | CS8 | CLOCAL | CREAD;  			break;  	}  	newtio.c_cflag |= CRTSCTS;		// CSTOPB - dva stop bity NEE | 
