diff options
-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 |