From 21ec3fac700bf50b8c5cfafa6b6b5a86599fa9e2 Mon Sep 17 00:00:00 2001 From: crunchy Date: Thu, 19 Sep 2002 22:23:01 +0000 Subject: bug fixes in error handling and fix in regex_fix --- ChangeLog | 16 +++++++++++++++- libmpio/mpio.c | 12 +++++------- libmpio/mpio.h | 4 ++-- mpiosh/callback.c | 47 ++++++++++++++++++++++++++++++++--------------- mpiosh/mpiosh.c | 5 ++--- 5 files changed, 56 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8fc9539..0631a9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,23 @@ +2002-09-20 Andreas Buesching + + * mpiosh/mpiosh.c (mpiosh_command_regex_fix): bug fix for .* + do not quote the '.' if next character is a '*' + + * libmpio/mpio.c (mpio_strerror): fixed stupid bug no + 23.423.543.453.453 (time to go to bed) + +2002-09-19 Andreas Buesching + + * libmpio/mpio.c (mpio_strerror): fixed a strange bug with the + argument name. Never call an argument errno?!? + 2002-09-19 Markus Germeier * mpiosh/callback.c (mpiosh_cmd_dump, mpiosh_cmd_mget) (mpiosh_cmd_mdel, mpiosh_cmd_mput): fixed handling of an abort * libmpio/mpio.c (MPIO_ERR_RETURN): fixed buggy define + 2002-09-19 Andreas Buesching * mpiosh/mpiosh.c (mpiosh_command_regex_fix): hopefully fixed a @@ -17,7 +31,7 @@ (mpio_file_get, mpio_file_put, mpio_file_del): using error handling functions ->>>>>>> 1.40 + 2002-09-19 Markus Germeier * libmpio/mpio.c (mpio_init_internal): diff --git a/libmpio/mpio.c b/libmpio/mpio.c index f1637cc..f9da4b8 100644 --- a/libmpio/mpio.c +++ b/libmpio/mpio.c @@ -1,6 +1,6 @@ /* * - * $Id: mpio.c,v 1.22 2002/09/19 21:25:07 germeier Exp $ + * $Id: mpio.c,v 1.23 2002/09/19 22:23:01 crunchy Exp $ * * Library for USB MPIO-* * @@ -770,16 +770,14 @@ mpio_errno(void) } char * -mpio_strerror(int errno) +mpio_strerror(int err) { int i; - printf("mpio_strerror %d\n", errno); - - if (errno >= 0) return NULL; + if (err >= 0) return NULL; for (i = 0; i < mpio_error_num; i++) { - if (mpio_errors[i].id == errno) + if (mpio_errors[i].id == err) return mpio_errors[i].msg; } @@ -790,7 +788,7 @@ void mpio_perror(char *prefix) { char *msg = mpio_strerror(_mpio_errno); - + if (msg == NULL) return; if (prefix) diff --git a/libmpio/mpio.h b/libmpio/mpio.h index 7df2349..b3d781d 100644 --- a/libmpio/mpio.h +++ b/libmpio/mpio.h @@ -1,7 +1,7 @@ /* -*- linux-c -*- */ /* - * $Id: mpio.h,v 1.6 2002/09/19 20:46:02 crunchy Exp $ + * $Id: mpio.h,v 1.7 2002/09/19 22:23:01 crunchy Exp $ * * Library for USB MPIO-* * @@ -102,7 +102,7 @@ int mpio_memory_debug(mpio_t *, mpio_mem_t); int mpio_errno(void); /* returns the description of the error */ -char * mpio_strerror(int errno); +char * mpio_strerror(int err); /* prints the error message of the last error*/ void mpio_perror(char *prefix); diff --git a/mpiosh/callback.c b/mpiosh/callback.c index ec929dc..3e8cb13 100644 --- a/mpiosh/callback.c +++ b/mpiosh/callback.c @@ -2,7 +2,7 @@ * * Author: Andreas Büsching * - * $Id: callback.c,v 1.14 2002/09/19 21:25:07 germeier Exp $ + * $Id: callback.c,v 1.15 2002/09/19 22:23:01 crunchy Exp $ * * Copyright (C) 2001 Andreas Büsching * @@ -240,20 +240,22 @@ mpiosh_callback_get(int read, int total) printf("\rretrieved %.2f %%", ((double) read / total) * 100.0 ); fflush(stdout); + if (mpiosh_cancel) + debug ("user cancelled operation\n"); + return mpiosh_cancel; // continue } void mpiosh_cmd_get(char *args[]) { - int size; - MPIOSH_CHECK_CONNECTION_CLOSED; MPIOSH_CHECK_ARG; - size = mpio_file_get(mpiosh.dev, mpiosh.card, args[0], mpiosh_callback_get); - - printf("\n"); + if (mpio_file_get(mpiosh.dev, mpiosh.card, args[0], + mpiosh_callback_get) == -1) { + mpio_perror("error"); + } } void @@ -287,11 +289,12 @@ mpiosh_cmd_mget(char *args[]) if (!(error = regexec(®ex, fname, 0, NULL, 0))) { printf("getting '%s' ... \n", fname); - if ((size = mpio_file_get(mpiosh.dev, mpiosh.card, + if ((mpio_file_get(mpiosh.dev, mpiosh.card, fname, mpiosh_callback_put)) == -1) { - mpio_perror("error"); - break; - } + debug("cancelled operation\n"); + mpio_perror("error"); + break; + } if (mpiosh_cancel) { debug("operation cancelled by user\n"); break; @@ -324,14 +327,16 @@ void mpiosh_cmd_put(char *args[]) { int size; - + MPIOSH_CHECK_CONNECTION_CLOSED; MPIOSH_CHECK_ARG; - size = mpio_file_put(mpiosh.dev, mpiosh.card, args[0], mpiosh_callback_put); - mpio_sync(mpiosh.dev, mpiosh.card); - - printf("\n"); + if ((size = mpio_file_put(mpiosh.dev, mpiosh.card, args[0], + mpiosh_callback_put)) == -1) { + mpio_perror("error"); + } else { + mpio_sync(mpiosh.dev, mpiosh.card); + } } void @@ -340,6 +345,7 @@ mpiosh_cmd_mput(char *args[]) char dir_buf[NAME_MAX]; int size, j, i = 0; struct dirent ** dentry, **run; + struct stat st; regex_t regex; int error; BYTE errortext[100]; @@ -359,6 +365,17 @@ mpiosh_cmd_mput(char *args[]) if ((size = scandir(dir_buf, &dentry, NULL, alphasort)) != -1) { run = dentry; for (j = 0; ((j < size) && (!mpiosh_cancel)); j++, run++) { + if (stat((*run)->d_name, &st) == -1) { + free(*run); + continue; + } else { + if (!S_ISREG(st.st_mode)) { + debugn(2, "not a regular file: '%s'\n", (*run)->d_name); + free(*run); + continue; + } + } + if (!(error = regexec(®ex, (*run)->d_name, 0, NULL, 0))) { printf("putting '%s' ... \n", (*run)->d_name); if (mpio_file_put(mpiosh.dev, mpiosh.card, diff --git a/mpiosh/mpiosh.c b/mpiosh/mpiosh.c index 83c45fb..fa2f75f 100644 --- a/mpiosh/mpiosh.c +++ b/mpiosh/mpiosh.c @@ -2,7 +2,7 @@ /* * - * $Id: mpiosh.c,v 1.15 2002/09/19 21:02:45 crunchy Exp $ + * $Id: mpiosh.c,v 1.16 2002/09/19 22:23:01 crunchy Exp $ * * Author: Andreas Büsching * @@ -259,7 +259,7 @@ mpiosh_command_regex_fix(char *argv[]) if (*help == '*' && ((help == *walk) || (*(help - 1) != '.'))) { *new_pos++ = '.'; *new_pos = *help; - } else if ((*help == '.') && (*help != '*')) { + } else if ((*help == '.') && (*(help + 1) != '*')) { *new_pos++ = '\\'; *new_pos = *help; } else if (*help == '?' && ((help == *walk) || (*(help - 1) != '\\'))) { @@ -273,7 +273,6 @@ mpiosh_command_regex_fix(char *argv[]) *new_pos = '$'; free(*walk); *walk = strdup(buffer); - printf("new regex: '%s'\n", *walk); walk++; } -- cgit v1.2.3