X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/29738a817bf83f9aba5ed664c4fba678889e404c..85330553eb619f783e0480dfc2bc467a9b4afd7b:/update/xfer_002.c diff --git a/update/xfer_002.c b/update/xfer_002.c index 32562c03..df000a04 100644 --- a/update/xfer_002.c +++ b/update/xfer_002.c @@ -14,17 +14,8 @@ #include #include -#include - RCSID("$Header$"); -extern CONNECTION conn; -extern char buf[BUFSIZ]; - -extern int code; - -extern int have_authorization, have_file, done; - /* * * syntax: @@ -46,11 +37,10 @@ extern int have_authorization, have_file, done; * of all at once; use checksums */ -int xfer_002(char *str) +void xfer_002(int conn, char *str) { - int file_size; - int checksum; - char *pathname; + int file_size, checksum, code; + char *pathname, *p; str += 8; while (*str == ' ') @@ -58,40 +48,46 @@ int xfer_002(char *str) if (!*str) { failure: - reject_call(MR_ARGS); - return 0; + send_int(conn, MR_ARGS); + return; } - file_size = atoi(str); - while (isdigit(*str)) - str++; + + file_size = strtol(str, &p, 10); + if (p == str) + { + send_int(conn, MR_ARGS); + return; + } + else + str = p; while (*str == ' ') str++; - checksum = atoi(str); - while (isdigit(*str)) - str++; + + checksum = strtol(str, &p, 10); + if (p == str) + { + send_int(conn, MR_ARGS); + return; + } + else + str = p; while (*str == ' ') str++; + if (*str != '/') goto failure; pathname = str; + if (!have_authorization) { - reject_call(MR_PERM); - return 0; + send_int(conn, MR_PERM); + return; } - if (done) /* re-initialize data */ - initialize(); - code = send_ok(); - if (code) - lose("sending ok for file xfer (2)"); - code = get_file(pathname, file_size, checksum, 0700, 0); + + send_ok(conn); + code = get_file(conn, pathname, file_size, checksum, 0700, 0); if (!code) - { - char buf[BUFSIZ]; - have_file = 1; - strcpy(buf, "transferred file "); - strcat(buf, pathname); - mr_log_info(buf); - } - return 0; + com_err(whoami, 0, "Transferred file %s", pathname); + + return; }