X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=client-src%2Fclient_util.c;fp=client-src%2Fclient_util.c;h=bbd94b5e8667dcd684903bf8894d32efcac29123;hb=d28952249e392eb31bc8eecc53f6c477f30c617b;hp=27694a67beae98e9aca4cade56ff27f91dc89a06;hpb=949b8910a5e23c4285d0b1aedacfc82a14dc97a5;p=debian%2Famanda diff --git a/client-src/client_util.c b/client-src/client_util.c index 27694a6..bbd94b5 100644 --- a/client-src/client_util.c +++ b/client-src/client_util.c @@ -1,6 +1,7 @@ /* * Amanda, The Advanced Maryland Automatic Network Disk Archiver * Copyright (c) 1991-1998 University of Maryland at College Park + * Copyright (c) 2007-2012 Zmanda, Inc. All Rights Reserved. * All Rights Reserved. * * Permission to use, copy, modify, distribute, and sell this software and its @@ -1258,6 +1259,7 @@ run_client_script( } void run_client_script_output(gpointer data, gpointer user_data); +void run_client_script_output_backup(gpointer data, gpointer user_data); void run_client_script_err_amcheck(gpointer data, gpointer user_data); void run_client_script_err_estimate(gpointer data, gpointer user_data); void run_client_script_err_backup(gpointer data, gpointer user_data); @@ -1281,6 +1283,19 @@ run_client_script_output( } } +void +run_client_script_output_backup( + gpointer data, + gpointer user_data) +{ + char *line = data; + script_output_t *so = user_data; + + if (line && so->stream) { + g_fprintf(so->stream, "| %s\n", line); + } +} + void run_client_script_err_amcheck( gpointer data, @@ -1345,31 +1360,27 @@ run_client_scripts( GSList *scriptlist; script_t *script; GFunc client_script_err = NULL; + GFunc client_script_out = NULL; script_output_t so = { streamout, dle }; for (scriptlist = dle->scriptlist; scriptlist != NULL; scriptlist = scriptlist->next) { script = (script_t *)scriptlist->data; run_client_script(script, execute_on, g_options, dle); - if (script->result && script->result->output) { - g_ptr_array_foreach(script->result->output, - run_client_script_output, - &so); - g_ptr_array_free(script->result->output, TRUE); - script->result->output = NULL; - } - if (script->result && script->result->err) { + if (script->result) { switch (execute_on) { case EXECUTE_ON_PRE_DLE_AMCHECK: case EXECUTE_ON_PRE_HOST_AMCHECK: case EXECUTE_ON_POST_DLE_AMCHECK: case EXECUTE_ON_POST_HOST_AMCHECK: + client_script_out = run_client_script_output; client_script_err = run_client_script_err_amcheck; break; case EXECUTE_ON_PRE_DLE_ESTIMATE: case EXECUTE_ON_PRE_HOST_ESTIMATE: case EXECUTE_ON_POST_DLE_ESTIMATE: case EXECUTE_ON_POST_HOST_ESTIMATE: + client_script_out = run_client_script_output; if (am_has_feature(g_options->features, fe_sendsize_rep_warning)) { client_script_err = run_client_script_err_estimate; @@ -1379,6 +1390,7 @@ run_client_scripts( case EXECUTE_ON_PRE_HOST_BACKUP: case EXECUTE_ON_POST_DLE_BACKUP: case EXECUTE_ON_POST_HOST_BACKUP: + client_script_out = run_client_script_output_backup; client_script_err = run_client_script_err_backup; break; case EXECUTE_ON_PRE_RECOVER: @@ -1386,15 +1398,27 @@ run_client_scripts( case EXECUTE_ON_PRE_LEVEL_RECOVER: case EXECUTE_ON_POST_LEVEL_RECOVER: case EXECUTE_ON_INTER_LEVEL_RECOVER: + client_script_out = run_client_script_output; client_script_err = run_client_script_err_recover; } - if (client_script_err != NULL) { - g_ptr_array_foreach(script->result->err, - client_script_err, - &so); + if (script->result->output) { + if (client_script_out) { + g_ptr_array_foreach(script->result->output, + client_script_out, + &so); + } + g_ptr_array_free(script->result->output, TRUE); + script->result->output = NULL; + } + if (script->result->err) { + if (client_script_err != NULL) { + g_ptr_array_foreach(script->result->err, + client_script_err, + &so); + } + g_ptr_array_free(script->result->err, TRUE); + script->result->err = NULL; } - g_ptr_array_free(script->result->err, TRUE); - script->result->err = NULL; } } }