X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fhelper%2Fioutil.c;h=a48879905a86734c637ca45834d1e765120774a9;hb=b61e454869c988e7fafc1c16982ccfec04415b51;hp=ba7e2155ac971986ee7210dd8f3501bbb70ed6c3;hpb=08d4411b59dd8bd0e7d8009003b71d23acbf6eee;p=openocd.git diff --git a/src/helper/ioutil.c b/src/helper/ioutil.c index ba7e2155ac..a48879905a 100644 --- a/src/helper/ioutil.c +++ b/src/helper/ioutil.c @@ -12,9 +12,7 @@ * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * + * along with this program. If not, see . * ***************************************************************************/ /* this file contains various functionality useful to standalone systems */ @@ -53,7 +51,7 @@ /* loads a file and returns a pointer to it in memory. The file contains * a 0 byte(sentinel) after len bytes - the length of the file. */ -int loadFile(const char *fileName, void **data, size_t *len) +static int load_file(const char *fileName, char **data, size_t *len) { /* ensure returned length is always sane */ *len = 0; @@ -98,8 +96,7 @@ int loadFile(const char *fileName, void **data, size_t *len) fclose(pFile); /* 0-byte after buffer (not included in *len) serves as a sentinel */ - char *buf = (char *)*data; - buf[*len] = 0; + (*data)[*len] = 0; return ERROR_OK; } @@ -111,12 +108,12 @@ COMMAND_HANDLER(handle_cat_command) /* NOTE!!! we only have line printing capability so we print the entire file as a single * line. */ - void *data; + char *data; size_t len; - int retval = loadFile(CMD_ARGV[0], &data, &len); + int retval = load_file(CMD_ARGV[0], &data, &len); if (retval == ERROR_OK) { - command_print(CMD_CTX, "%s", (char *)data); + command_print(CMD_CTX, "%s", data); free(data); } else command_print(CMD_CTX, "%s not found", CMD_ARGV[0]); @@ -196,10 +193,10 @@ COMMAND_HANDLER(handle_cp_command) /* NOTE!!! we only have line printing capability so we print the entire file as a single * line. */ - void *data; + char *data; size_t len; - int retval = loadFile(CMD_ARGV[0], &data, &len); + int retval = load_file(CMD_ARGV[0], &data, &len); if (retval != ERROR_OK) return retval; @@ -214,7 +211,7 @@ COMMAND_HANDLER(handle_cp_command) if (chunk > maxChunk) chunk = maxChunk; - if ((retval == ERROR_OK) && (fwrite(((char *)data) + pos, 1, chunk, f) != chunk)) + if ((retval == ERROR_OK) && (fwrite(data + pos, 1, chunk, f) != chunk)) retval = ERROR_COMMAND_SYNTAX_ERROR; if (retval != ERROR_OK) @@ -244,117 +241,6 @@ COMMAND_HANDLER(handle_cp_command) return retval; } -#define SHOW_RESULT(a, b) LOG_ERROR(# a " failed %d\n", (int)b) - -#define IOSIZE 512 -void copyfile(char *name2, char *name1) -{ - - int err; - char buf[IOSIZE]; - int fd1, fd2; - ssize_t done, wrote; - - fd1 = open(name1, O_WRONLY | O_CREAT, 0664); - if (fd1 < 0) - SHOW_RESULT(open, fd1); - - fd2 = open(name2, O_RDONLY); - if (fd2 < 0) - SHOW_RESULT(open, fd2); - - for (;; ) { - done = read(fd2, buf, IOSIZE); - if (done < 0) { - SHOW_RESULT(read, done); - break; - } - - if (done == 0) - break; - - wrote = write(fd1, buf, done); - if (wrote != done) - SHOW_RESULT(write, wrote); - - if (wrote != done) - break; - } - - err = close(fd1); - if (err < 0) - SHOW_RESULT(close, err); - - err = close(fd2); - if (err < 0) - SHOW_RESULT(close, err); -} - -/* utility fn to copy a directory */ -void copydir(char *name, char *destdir) -{ - int err; - DIR *dirp; - - dirp = opendir(destdir); - if (dirp == NULL) - mkdir(destdir, 0777); - else - err = closedir(dirp); - - dirp = opendir(name); - if (dirp == NULL) - SHOW_RESULT(opendir, -1); - - for (;; ) { - struct dirent *entry = readdir(dirp); - - if (entry == NULL) - break; - - if (strcmp(entry->d_name, ".") == 0) - continue; - if (strcmp(entry->d_name, "..") == 0) - continue; - - int isDir = 0; - struct stat buf; - char fullPath[PATH_MAX]; - strncpy(fullPath, name, PATH_MAX); - strcat(fullPath, "/"); - strncat(fullPath, entry->d_name, PATH_MAX - strlen(fullPath)); - - if (stat(fullPath, &buf) == -1) { - LOG_ERROR("unable to read status from %s", fullPath); - break; - } - isDir = S_ISDIR(buf.st_mode) != 0; - - if (isDir) - continue; - - /* diag_printf(": entry %14s",entry->d_name); */ - char fullname[PATH_MAX]; - char fullname2[PATH_MAX]; - - strcpy(fullname, name); - strcat(fullname, "/"); - strcat(fullname, entry->d_name); - - strcpy(fullname2, destdir); - strcat(fullname2, "/"); - strcat(fullname2, entry->d_name); - /* diag_printf("from %s to %s\n", fullname, fullname2); */ - copyfile(fullname, fullname2); - - /* diag_printf("\n"); */ - } - - err = closedir(dirp); - if (err < 0) - SHOW_RESULT(stat, err); -} - COMMAND_HANDLER(handle_rm_command) { if (CMD_ARGC != 1) @@ -378,7 +264,7 @@ static int ioutil_Jim_Command_ls(Jim_Interp *interp, return JIM_ERR; } - char *name = (char *) Jim_GetString(argv[1], NULL); + const char *name = Jim_GetString(argv[1], NULL); DIR *dirp = NULL; dirp = opendir(name); @@ -586,6 +472,7 @@ static const struct command_registration ioutil_command_handlers[] = { .handler = handle_meminfo_command, .mode = COMMAND_ANY, .help = "display free heap space", + .usage = "", }, #endif {