X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fua.h;h=31ca5b49e4303c2718dd94b34338b5744f207823;hb=92e72bae5bc1f3a88b06cb4fa6495a4365ac8ee4;hp=b7d33892f55ae24246f41110bddfea845e63f5eb;hpb=253f7da0668e69f8a37b49245f99195881120f41;p=bacula%2Fbacula diff --git a/bacula/src/dird/ua.h b/bacula/src/dird/ua.h index b7d33892f5..31ca5b49e4 100644 --- a/bacula/src/dird/ua.h +++ b/bacula/src/dird/ua.h @@ -1,40 +1,49 @@ /* - * Includes specific to the Director User Agent Server - * - * Kern Sibbald, August MMI - * - * Version $Id$ - */ -/* - Copyright (C) 2000-2003 Kern Sibbald and John Walker + Bacula® - The Network Backup Solution + + Copyright (C) 2001-2007 Free Software Foundation Europe e.V. - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation and included + in the file LICENSE. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. + 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. + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ +/* + * Includes specific to the Director User Agent Server + * + * Kern Sibbald, August MMI + * + * Version $Id$ */ #ifndef __UA_H_ #define __UA_H_ 1 - -typedef struct s_ua_context { +class UAContext { +public: BSOCK *UA_sock; BSOCK *sd; JCR *jcr; B_DB *db; CAT *catalog; + CONRES *cons; /* console resource */ POOLMEM *cmd; /* return command/name buffer */ POOLMEM *args; /* command line arguments */ char *argk[MAX_CMD_ARGS]; /* argument keywords */ @@ -43,11 +52,79 @@ typedef struct s_ua_context { char **prompt; /* list of prompts */ int max_prompts; /* max size of list */ int num_prompts; /* current number in list */ - int auto_display_messages; /* if set, display messages */ - int user_notified_msg_pending; /* set when user notified */ - int automount; /* if set, mount after label */ - int quit; /* if set, quit */ - int verbose; /* set for normal UA verbosity */ -} UAContext; + int api; /* For programs want an API */ + bool auto_display_messages; /* if set, display messages */ + bool user_notified_msg_pending; /* set when user notified */ + bool automount; /* if set, mount after label */ + bool quit; /* if set, quit */ + bool verbose; /* set for normal UA verbosity */ + bool batch; /* set for non-interactive mode */ + bool gui; /* set if talking to GUI program */ + bool runscript; /* set if we are in runscript */ + uint32_t pint32_val; /* positive integer */ + int32_t int32_val; /* positive/negative */ + int64_t int64_val; /* big int */ + + void signal(int sig) { UA_sock->signal(sig); }; + + /* The below are in ua_output.c */ + void send_msg(const char *fmt, ...); + void error_msg(const char *fmt, ...); + void warning_msg(const char *fmt, ...); + void info_msg(const char *fmt, ...); +}; + +/* Context for insert_tree_handler() */ +struct TREE_CTX { + TREE_ROOT *root; /* root */ + TREE_NODE *node; /* current node */ + TREE_NODE *avail_node; /* unused node last insert */ + int cnt; /* count for user feedback */ + bool all; /* if set mark all as default */ + UAContext *ua; + uint32_t FileEstimate; /* estimate of number of files */ + uint32_t FileCount; /* current count of files */ + uint32_t LastCount; /* last count of files */ + uint32_t DeltaCount; /* trigger for printing */ +}; + +struct NAME_LIST { + char **name; /* list of names */ + int num_ids; /* ids stored */ + int max_ids; /* size of array */ + int num_del; /* number deleted */ + int tot_ids; /* total to process */ +}; + + +/* Main structure for obtaining JobIds or Files to be restored */ +struct RESTORE_CTX { + utime_t JobTDate; + uint32_t TotalFiles; + JobId_t JobId; + char ClientName[MAX_NAME_LENGTH]; /* backup client */ + char RestoreClientName[MAX_NAME_LENGTH]; /* restore client */ + char last_jobid[20]; + POOLMEM *JobIds; /* User entered string of JobIds */ + POOLMEM *BaseJobIds; /* Base jobids */ + STORE *store; + JOB *restore_job; + POOL *pool; + int restore_jobs; + uint32_t selected_files; + char *where; + char *RegexWhere; + RBSR *bsr; + POOLMEM *fname; /* filename only */ + POOLMEM *path; /* path only */ + POOLMEM *query; + int fnl; /* filename length */ + int pnl; /* path length */ + bool found; + bool all; /* mark all as default */ + NAME_LIST name_list; +}; + +#define MAX_ID_LIST_LEN 2000000 #endif