/*
* 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
levellist_t levellist;
char number[NUM_STR_SIZE];
for (levellist=dle->levellist; levellist; levellist=levellist->next) {
- level_t *alevel = (level_t *)levellist->data;
+ am_level_t *alevel = (am_level_t *)levellist->data;
g_ptr_array_add(argv_ptr, stralloc("--level"));
g_snprintf(number, SIZEOF(number), "%d", alevel->level);
g_ptr_array_add(argv_ptr, stralloc(number));
}
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);
}
}
+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,
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;
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:
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;
}
}
}