From 37404b1ff983a486b8d295d7718b4532df451a61 Mon Sep 17 00:00:00 2001 From: mksanger Date: Thu, 5 Sep 2024 17:04:58 +0100 Subject: [PATCH 1/3] Add option to print server version --- src/baton-do.c | 92 +++++++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/src/baton-do.c b/src/baton-do.c index 56bed205..f7480c9e 100644 --- a/src/baton-do.c +++ b/src/baton-do.c @@ -27,16 +27,17 @@ #include "config.h" #include "baton.h" -static int debug_flag = 0; -static int help_flag = 0; -static int no_error_flag = 0; -static int silent_flag = 0; -static int single_server_flag = 0; -static int unbuffered_flag = 0; -static int unsafe_flag = 0; -static int verbose_flag = 0; -static int version_flag = 0; -static int wlock_flag = 0; +static int debug_flag = 0; +static int help_flag = 0; +static int no_error_flag = 0; +static int server_version_flag = 0; +static int silent_flag = 0; +static int single_server_flag = 0; +static int unbuffered_flag = 0; +static int unsafe_flag = 0; +static int verbose_flag = 0; +static int version_flag = 0; +static int wlock_flag = 0; static size_t default_buffer_size = 1024 * 64 * 16 * 2; @@ -51,16 +52,17 @@ int main(int argc, char *argv[]) { while (1) { static struct option long_options[] = { // Flag options - {"debug", no_argument, &debug_flag, 1}, - {"help", no_argument, &help_flag, 1}, - {"no-error", no_argument, &no_error_flag, 1}, - {"silent", no_argument, &silent_flag, 1}, - {"single-server", no_argument, &single_server_flag, 1}, - {"unbuffered", no_argument, &unbuffered_flag, 1}, - {"unsafe", no_argument, &unsafe_flag, 1}, - {"verbose", no_argument, &verbose_flag, 1}, - {"version", no_argument, &version_flag, 1}, - {"wlock", no_argument, &wlock_flag, 1}, + {"debug", no_argument, &debug_flag, 1}, + {"help", no_argument, &help_flag, 1}, + {"no-error", no_argument, &no_error_flag, 1}, + {"server-version", no_argument, &server_version_flag, 1}, + {"silent", no_argument, &silent_flag, 1}, + {"single-server", no_argument, &single_server_flag, 1}, + {"unbuffered", no_argument, &unbuffered_flag, 1}, + {"unsafe", no_argument, &unsafe_flag, 1}, + {"verbose", no_argument, &verbose_flag, 1}, + {"version", no_argument, &version_flag, 1}, + {"wlock", no_argument, &wlock_flag, 1}, // Indexed options {"connect-time", required_argument, NULL, 'c'}, {"file", required_argument, NULL, 'f'}, @@ -123,25 +125,26 @@ int main(int argc, char *argv[]) { " Performs remote operations as described in the JSON\n" " input file.\n" "\n" - " --connect-time The duration in seconds after which a connection\n" - " to iRODS will be refreshed (closed and reopened\n" - " between JSON documents) to allow iRODS server\n" - " resources to be released. Optional, defaults to\n" - " 10 minutes.\n" - " --file The JSON file describing the operations.\n" - " Optional, defaults to STDIN.\n" - " --no-error Do not return a non-zero exit code on iRODS\n" - " errors. Errors will still be reported in-band\n" - " as JSON responses.\n" - " --silent Silence error messages.\n" - " --single-server Only connect to a single iRODS server\n" - " --unbuffered Flush print operations for each JSON object.\n" - - " --verbose Print verbose messages to STDERR.\n" - " --version Print the version number and exit.\n" - " --wlock Enable server-side advisory write locking.\n" - " Optional, defaults to false.\n" - " --zone The zone to operate within. Optional.\n"; + " --connect-time The duration in seconds after which a connection\n" + " to iRODS will be refreshed (closed and reopened\n" + " between JSON documents) to allow iRODS server\n" + " resources to be released. Optional, defaults to\n" + " 10 minutes.\n" + " --file The JSON file describing the operations.\n" + " Optional, defaults to STDIN.\n" + " --no-error Do not return a non-zero exit code on iRODS\n" + " errors. Errors will still be reported in-band\n" + " as JSON responses.\n" + " --server-version Print the version of the server and exit.\n" + " --silent Silence error messages.\n" + " --single-server Only connect to a single iRODS server\n" + " --unbuffered Flush print operations for each JSON object.\n" + + " --verbose Print verbose messages to STDERR.\n" + " --version Print the version number and exit.\n" + " --wlock Enable server-side advisory write locking.\n" + " Optional, defaults to false.\n" + " --zone The zone to operate within. Optional.\n"; if (help_flag) { printf("%s\n",help); @@ -153,6 +156,17 @@ int main(int argc, char *argv[]) { exit(0); } + if (server_version_flag) { + rodsEnv env; + baton_error_t error; + rcComm_t *connection = rods_login(&env); + char *server_version = get_server_version(connection, &error); + rcDisconnect(connection); + if (error.code != 0) exit(1); + printf("%s\n", server_version); + exit(0); + } + if (single_server_flag) flags = flags | SINGLE_SERVER; if (unbuffered_flag) flags = flags | FLUSH; if (unsafe_flag) flags = flags | UNSAFE_RESOLVE; From 2b6eee87384c1d5958f29b7f841945a1c0d85661 Mon Sep 17 00:00:00 2001 From: mksanger Date: Thu, 12 Sep 2024 17:39:01 +0100 Subject: [PATCH 2/3] small typo --- src/write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/write.c b/src/write.c index 878981ad..750af924 100644 --- a/src/write.c +++ b/src/write.c @@ -83,7 +83,7 @@ int put_data_obj(rcComm_t *conn, const char *local_path, rodsPath_t *rods_path, char *err_subname; const char *err_name = rodsErrorName(status, &err_subname); set_baton_error(error, status, - "Failed calculate a local checksum for: '%s' " + "Failed to calculate a local checksum for: '%s' " "error %d %s", rods_path->outPath, status, err_name); goto error; From 978721bb29e850bf19b0043557e6bd5338398f33 Mon Sep 17 00:00:00 2001 From: mksanger Date: Thu, 12 Sep 2024 17:50:06 +0100 Subject: [PATCH 3/3] Add error message if failing to get server version --- src/baton-do.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/baton-do.c b/src/baton-do.c index f7480c9e..5a354733 100644 --- a/src/baton-do.c +++ b/src/baton-do.c @@ -162,7 +162,10 @@ int main(int argc, char *argv[]) { rcComm_t *connection = rods_login(&env); char *server_version = get_server_version(connection, &error); rcDisconnect(connection); - if (error.code != 0) exit(1); + if (error.code != 0) { + logmsg(ERROR, "Failed to get server version"); + exit(1); + } printf("%s\n", server_version); exit(0); }