From: Kern Sibbald Date: Mon, 15 Sep 2003 21:07:07 +0000 (+0000) Subject: list nextvol + retry waitpid on intr X-Git-Tag: Release-1.32~16 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=777b152b8d34c0492f875e66a2b011099705be66;p=bacula%2Fbacula list nextvol + retry waitpid on intr git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@703 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/ReleaseNotes b/bacula/ReleaseNotes index d86744ebe9..c12647cb8c 100644 --- a/bacula/ReleaseNotes +++ b/bacula/ReleaseNotes @@ -1,7 +1,7 @@ Release Notes for Bacula 1.32 - Bacula code: Total files = 259 Total lines = 77,284 (*.h *.c *.in) + Bacula code: Total files = 259 Total lines = 77,334 (*.h *.c *.in) Major Changes this Release: - Fixed gnome-console to compile with RH9 (Gnome 2.0) diff --git a/bacula/kernstodo b/bacula/kernstodo index 5509159166..b392013a42 100644 --- a/bacula/kernstodo +++ b/bacula/kernstodo @@ -1,5 +1,5 @@ Kern's ToDo List - 12 September 2003 + 15 September 2003 Documentation to do: (any release a little bit at a time) - Document running a test version. @@ -23,6 +23,7 @@ Testing to do: (painful) - Figure out how to use ssh or stunnel to protect Bacula communications. For 1.32: +- Document list nextvol and new format status dir. - Document new records in Director. SDAddress SDDeviceName, SDPassword. FDPassword, FDAddress, DBAddress, DBPort, DBPassword. - It is generally safe to use the drive when the lights stop flashing. @@ -34,10 +35,9 @@ For 1.32: - Allow a slot or range of slots on the label barcodes command. when the magazine is changed. - Don't print "Warning: Wrong Volume mounted ..." if mounting second volume. -- Implement List Volume Job=xxx or List scheduled volumes or Status Director -- May variable expansion work correctly. - LabelFormat on tape volume apparently creates the db record but never actually labels the volume. +- Copy static programs into install directory. For 1.33 - Think about changing Storage resource Device record to be @@ -912,3 +912,5 @@ Done: (see kernsdone for more) - Document SDConnectTimeout (in FD). - Add restore by filename test. - Document restore by files. +- Make variable expansion work correctly. +- Implement List Volume Job=xxx or List scheduled volumes or Status Director diff --git a/bacula/src/console.glade b/bacula/src/console.glade index c9509b3c36..7a3d200832 100644 --- a/bacula/src/console.glade +++ b/bacula/src/console.glade @@ -18,8 +18,6 @@ GtkWindow app1 - 800 - 500 delete_event on_app1_delete_event @@ -29,10 +27,9 @@ GTK_WINDOW_TOPLEVEL GTK_WIN_POS_CENTER False - 500 True True - False + True GtkVBox @@ -690,8 +687,8 @@ GTK_WINDOW_TOPLEVEL GTK_WIN_POS_CENTER True - False - False + True + True False diff --git a/bacula/src/dird/newvol.c b/bacula/src/dird/newvol.c index 380c8c98ba..f449fa9f2f 100644 --- a/bacula/src/dird/newvol.c +++ b/bacula/src/dird/newvol.c @@ -41,7 +41,7 @@ static int perform_full_name_substitution(JCR *jcr, MEDIA_DBR *mr, POOL_DBR *pr) /* - * Really crude automatic Volume name creation using + * Automatic Volume name creation using * LabelFormat. We assume that if this routine is being * called the Volume will be labeled, so we set the LabelDate. */ diff --git a/bacula/src/dird/protos.h b/bacula/src/dird/protos.h index 5ec7d8d6ce..e54713823d 100644 --- a/bacula/src/dird/protos.h +++ b/bacula/src/dird/protos.h @@ -62,7 +62,7 @@ int variable_expansion(JCR *jcr, char *inp, POOLMEM **exp); /* fd_cmds.c */ extern int connect_to_file_daemon(JCR *jcr, int retry_interval, - int max_retry_time, int verbose); + int max_retry_time, int verbose); extern int send_include_list(JCR *jcr); extern int send_exclude_list(JCR *jcr); extern int send_bootstrap_file(JCR *jcr); @@ -70,7 +70,7 @@ extern int send_level_command(JCR *jcr); extern int get_attributes_and_put_in_catalog(JCR *jcr); extern int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId); extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname, - char *link, char *attr, int stream); + char *link, char *attr, int stream); extern void get_level_since_time(JCR *jcr, char *since, int since_len); extern int send_run_before_and_after_commands(JCR *jcr); @@ -93,7 +93,7 @@ extern void mount_request(JCR *jcr, BSOCK *bs, char *buf); /* msgchan.c */ extern int connect_to_storage_daemon(JCR *jcr, int retry_interval, - int max_retry_time, int verbose); + int max_retry_time, int verbose); extern int start_storage_daemon_job(JCR *jcr); extern int start_storage_daemon_message_thread(JCR *jcr); extern int bget_dirmsg(BSOCK *bs); @@ -129,6 +129,7 @@ int is_volume_name_legal(UAContext *ua, char *name); /* ua_output.c */ void prtit(void *ctx, char *msg); +int complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool); /* ua_server.c */ void bsendmsg(void *sock, char *fmt, ...); @@ -136,28 +137,28 @@ UAContext *new_ua_context(JCR *jcr); void free_ua_context(UAContext *ua); /* ua_select.c */ -STORE *select_storage_resource(UAContext *ua); -JOB *select_job_resource(UAContext *ua); -JOB *select_restore_job_resource(UAContext *ua); -CLIENT *select_client_resource(UAContext *ua); +STORE *select_storage_resource(UAContext *ua); +JOB *select_job_resource(UAContext *ua); +JOB *select_restore_job_resource(UAContext *ua); +CLIENT *select_client_resource(UAContext *ua); FILESET *select_fileset_resource(UAContext *ua); -int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr); -int select_media_dbr(UAContext *ua, MEDIA_DBR *mr); -int select_pool_dbr(UAContext *ua, POOL_DBR *pr); -int select_client_dbr(UAContext *ua, CLIENT_DBR *cr); - -void start_prompt(UAContext *ua, char *msg); -void add_prompt(UAContext *ua, char *prompt); -int do_prompt(UAContext *ua, char *automsg, char *msg, char *prompt, int max_prompt); -CAT *get_catalog_resource(UAContext *ua); +int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr); +int select_media_dbr(UAContext *ua, MEDIA_DBR *mr); +int select_pool_dbr(UAContext *ua, POOL_DBR *pr); +int select_client_dbr(UAContext *ua, CLIENT_DBR *cr); + +void start_prompt(UAContext *ua, char *msg); +void add_prompt(UAContext *ua, char *prompt); +int do_prompt(UAContext *ua, char *automsg, char *msg, char *prompt, int max_prompt); +CAT *get_catalog_resource(UAContext *ua); STORE *get_storage_resource(UAContext *ua, int use_default); -int get_media_type(UAContext *ua, char *MediaType, int max_media); -int get_pool_dbr(UAContext *ua, POOL_DBR *pr); -int get_client_dbr(UAContext *ua, CLIENT_DBR *cr); +int get_media_type(UAContext *ua, char *MediaType, int max_media); +int get_pool_dbr(UAContext *ua, POOL_DBR *pr); +int get_client_dbr(UAContext *ua, CLIENT_DBR *cr); POOL *get_pool_resource(UAContext *ua); POOL *select_pool_resource(UAContext *ua); CLIENT *get_client_resource(UAContext *ua); -int get_job_dbr(UAContext *ua, JOB_DBR *jr); +int get_job_dbr(UAContext *ua, JOB_DBR *jr); int find_arg_keyword(UAContext *ua, char **list); int find_arg(UAContext *ua, char *keyword); diff --git a/bacula/src/dird/ua_cmds.c b/bacula/src/dird/ua_cmds.c index 1273b0c83b..b4540a543c 100644 --- a/bacula/src/dird/ua_cmds.c +++ b/bacula/src/dird/ua_cmds.c @@ -43,8 +43,8 @@ extern char *list_pool; /* Imported functions */ extern int status_cmd(UAContext *ua, char *cmd); -extern int listcmd(UAContext *ua, char *cmd); -extern int llistcmd(UAContext *ua, char *cmd); +extern int list_cmd(UAContext *ua, char *cmd); +extern int llist_cmd(UAContext *ua, char *cmd); extern int show_cmd(UAContext *ua, char *cmd); extern int messagescmd(UAContext *ua, char *cmd); extern int autodisplaycmd(UAContext *ua, char *cmd); @@ -95,8 +95,8 @@ static struct cmdstruct commands[] = { { N_("exit"), quit_cmd, _("exit = quit")}, { N_("help"), help_cmd, _("print this command")}, { N_("label"), label_cmd, _("label a tape")}, - { N_("list"), listcmd, _("list [pools | jobs | jobtotals | media | files job=]; from catalog")}, - { N_("llist"), llistcmd, _("full or long list like list command")}, + { N_("list"), list_cmd, _("list [pools | jobs | jobtotals | media | files job=]; from catalog")}, + { N_("llist"), llist_cmd, _("full or long list like list command")}, { N_("messages"), messagescmd, _("messages")}, { N_("mount"), mount_cmd, _("mount ")}, { N_("prune"), prunecmd, _("prune expired records from catalog")}, diff --git a/bacula/src/dird/ua_output.c b/bacula/src/dird/ua_output.c index 8723e08875..b79001982e 100644 --- a/bacula/src/dird/ua_output.c +++ b/bacula/src/dird/ua_output.c @@ -45,8 +45,7 @@ extern brwlock_t con_lock; /* Imported functions */ /* Forward referenced functions */ -static int do_listcmd(UAContext *ua, char *cmd, e_list_type llist); - +static int do_list_cmd(UAContext *ua, char *cmd, e_list_type llist); /* * Turn auto display of console messages on/off @@ -59,15 +58,15 @@ int autodisplaycmd(UAContext *ua, char *cmd) NULL}; switch (find_arg_keyword(ua, kw)) { - case 0: - ua->auto_display_messages = 1; - break; - case 1: - ua->auto_display_messages = 0; - break; - default: - bsendmsg(ua, _("ON or OFF keyword missing.\n")); - break; + case 0: + ua->auto_display_messages = 1; + break; + case 1: + ua->auto_display_messages = 0; + break; + default: + bsendmsg(ua, _("ON or OFF keyword missing.\n")); + break; } return 1; } @@ -188,22 +187,24 @@ int show_cmd(UAContext *ua, char *cmd) * list media - list media for given pool (deprecated) * list volumes - list Volumes * list clients - list clients + * list nextvol job=xx - list the next vol to be used by job + * list nextvolume job=xx - same as above. * */ /* Do long or full listing */ -int llistcmd(UAContext *ua, char *cmd) +int llist_cmd(UAContext *ua, char *cmd) { - return do_listcmd(ua, cmd, VERT_LIST); + return do_list_cmd(ua, cmd, VERT_LIST); } /* Do short or summary listing */ -int listcmd(UAContext *ua, char *cmd) +int list_cmd(UAContext *ua, char *cmd) { - return do_listcmd(ua, cmd, HORZ_LIST); + return do_list_cmd(ua, cmd, HORZ_LIST); } -static int do_listcmd(UAContext *ua, char *cmd, e_list_type llist) +static int do_list_cmd(UAContext *ua, char *cmd, e_list_type llist) { POOLMEM *VolumeName; int jobid, n; @@ -366,6 +367,40 @@ static int do_listcmd(UAContext *ua, char *cmd, e_list_type llist) bstrncpy(mr.VolumeName, ua->argv[i], sizeof(mr.VolumeName)); db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua, llist); return 1; + /* List next volume */ + } else if (strcasecmp(ua->argk[i], _("nextvol")) == 0 || + strcasecmp(ua->argk[i], _("nextvolume")) == 0) { + JOB *job; + JCR *jcr = ua->jcr; + i = find_arg_with_value(ua, "job"); + if (i <= 0) { + if ((job = select_job_resource(ua)) == NULL) { + return 1; + } + } else { + job = (JOB *)GetResWithName(R_JOB, ua->argv[i]); + if (!job) { + Jmsg(jcr, M_ERROR, 0, _("%s is not a job name.\n"), ua->argv[i]); + if ((job = select_job_resource(ua)) == NULL) { + return 1; + } + } + } + if (!complete_jcr_for_job(jcr, job, NULL)) { + return 1; + } + + if (!find_next_volume_for_append(jcr, &mr, 0)) { + bsendmsg(ua, "Could not find next Volume\n"); + db_close_database(jcr, jcr->db); + jcr->db = NULL; + return 1; + } else { + bsendmsg(ua, "The next Volume to be used by Job \"%s\" will be %s\n", + job->hdr.name, mr.VolumeName); + } + db_close_database(jcr, jcr->db); + jcr->db = NULL; } else { bsendmsg(ua, _("Unknown list keyword: %s\n"), NPRT(ua->argk[i])); } @@ -373,6 +408,49 @@ static int do_listcmd(UAContext *ua, char *cmd, e_list_type llist) return 1; } +/* + * Fill in the remaining fields of the jcr as if it + * is going to run the job. + */ +int complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool) +{ + POOL_DBR pr; + + memset(&pr, 0, sizeof(POOL_DBR)); + set_jcr_defaults(jcr, job); + if (pool) { + jcr->pool = pool; /* override */ + } + jcr->db = jcr->db=db_init_database(jcr, jcr->catalog->db_name, jcr->catalog->db_user, + jcr->catalog->db_password, jcr->catalog->db_address, + jcr->catalog->db_port, jcr->catalog->db_socket); + if (!jcr->db || !db_open_database(jcr, jcr->db)) { + Jmsg(jcr, M_FATAL, 0, _("Could not open database \"%s\".\n"), + jcr->catalog->db_name); + if (jcr->db) { + Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db)); + } + return 0; + } + bstrncpy(pr.Name, jcr->pool->hdr.name, sizeof(pr.Name)); + while (!db_get_pool_record(jcr, jcr->db, &pr)) { /* get by Name */ + /* Try to create the pool */ + if (create_pool(jcr, jcr->db, jcr->pool, POOL_OP_CREATE) < 0) { + Jmsg(jcr, M_FATAL, 0, _("Pool %s not in database. %s"), pr.Name, + db_strerror(jcr->db)); + db_close_database(jcr, jcr->db); + jcr->db = NULL; + return 0; + } else { + Jmsg(jcr, M_INFO, 0, _("Pool %s created in database.\n"), pr.Name); + } + } + jcr->PoolId = pr.PoolId; + jcr->jr.PoolId = pr.PoolId; + return 1; +} + + static void con_lock_release(void *arg) { Vw(con_lock); diff --git a/bacula/src/dird/ua_status.c b/bacula/src/dird/ua_status.c index 2ba3a70ec4..a8196d8736 100644 --- a/bacula/src/dird/ua_status.c +++ b/bacula/src/dird/ua_status.c @@ -196,7 +196,6 @@ static void do_director_status(UAContext *ua, char *cmd) char dt[MAX_TIME_LENGTH], b1[30], b2[30]; int pool_mem = FALSE; - Dmsg0(200, "Doing status\n"); bsendmsg(ua, "%s Version: " VERSION " (" BDATE ") %s %s %s\n", my_name, HOST_OS, DISTNAME, DISTVER); bstrftime(dt, sizeof(dt), daemon_start_time); @@ -389,17 +388,37 @@ static void do_client_status(UAContext *ua, CLIENT *client) static void prt_runhdr(UAContext *ua) { - bsendmsg(ua, _("Level Type Scheduled Name\n")); - bsendmsg(ua, _("=================================================================\n")); + bsendmsg(ua, _("\nScheduled Jobs:\n")); + bsendmsg(ua, _("Level Type Scheduled Name Volume\n")); + bsendmsg(ua, _("===============================================================================\n")); } -static void prt_runtime(UAContext *ua, JOB *job, int level, time_t runtime) +static void prt_runtime(UAContext *ua, JOB *job, int level, time_t runtime, POOL *pool) { char dt[MAX_TIME_LENGTH]; - + bool ok = false; + JCR *jcr = ua->jcr; + MEDIA_DBR mr; + memset(&mr, 0, sizeof(mr)); + if (job->JobType == JT_BACKUP) { + jcr->db = NULL; + ok = complete_jcr_for_job(jcr, job, pool); + if (ok) { + ok = find_next_volume_for_append(jcr, &mr, 0); + } + if (!ok) { + bstrncpy(mr.VolumeName, "*unknown*", sizeof(mr.VolumeName)); + } + } bstrftime(dt, sizeof(dt), runtime); - bsendmsg(ua, _("%-14s %-8s %-18s %s\n"), - level_to_str(level), job_type_to_str(job->JobType), dt, job->hdr.name); + bsendmsg(ua, _("%-14s %-8s %-18s %-18s %s\n"), + level_to_str(level), job_type_to_str(job->JobType), dt, job->hdr.name, + mr.VolumeName); + if (jcr->db) { + db_close_database(jcr, jcr->db); + jcr->db = ua->db; + } + } /* @@ -473,7 +492,7 @@ static void print_jobs_scheduled(UAContext *ua) hdr_printed = TRUE; prt_runhdr(ua); } - prt_runtime(ua, job, level, runtime); + prt_runtime(ua, job, level, runtime, run->pool); found = TRUE; break; } @@ -501,7 +520,7 @@ static void print_jobs_scheduled(UAContext *ua) hdr_printed = TRUE; prt_runhdr(ua); } - prt_runtime(ua, job, level, runtime); + prt_runtime(ua, job, level, runtime, run->pool); } } } /* end for loop over runs */ diff --git a/bacula/src/lib/bpipe.c b/bacula/src/lib/bpipe.c index 0a00caf73c..a44290b75d 100644 --- a/bacula/src/lib/bpipe.c +++ b/bacula/src/lib/bpipe.c @@ -159,8 +159,10 @@ int close_bpipe(BPIPE *bpipe) /* wait for worker child to exit */ for ( ;; ) { Dmsg2(200, "Wait for %d opt=%d\n", bpipe->worker_pid, wait_option); - wpid = waitpid(bpipe->worker_pid, &chldstatus, wait_option); - if (wpid == bpipe->worker_pid || (wpid == -1 && errno != EINTR)) { + do { + wpid = waitpid(bpipe->worker_pid, &chldstatus, wait_option); + } while (wpid == -1 && (errno == EINTR || errno == EAGAIN)); + if (wpid == bpipe->worker_pid || wpid == -1) { Dmsg3(200, "Got break wpid=%d status=%d ERR=%s\n", wpid, chldstatus, wpid==-1?strerror(errno):"none"); break; diff --git a/bacula/src/lib/bsys.c b/bacula/src/lib/bsys.c index 5141515ff1..da3fd7c176 100644 --- a/bacula/src/lib/bsys.c +++ b/bacula/src/lib/bsys.c @@ -443,7 +443,7 @@ strtoll(const char *ptr, char **endptr, int base) * Bacula's implementation of fgets(). The difference is that it handles * being interrupted by a signal (e.g. a SIGCHLD). */ -#undef bfgets +#undef fgetc char *bfgets(char *s, int size, FILE *fd) { char *p = s; diff --git a/bacula/src/lib/lex.c b/bacula/src/lib/lex.c index 88dcfe1b4e..04131d7171 100644 --- a/bacula/src/lib/lex.c +++ b/bacula/src/lib/lex.c @@ -36,10 +36,10 @@ extern int debug_level; */ void scan_to_eol(LEX *lc) { - Dmsg0(150, "start scan to eof\n"); + Dmsg0(900, "start scan to eof\n"); while (lex_get_token(lc, T_ALL) != T_EOL) { } - Dmsg0(150, "done scan to eof\n"); + Dmsg0(900, "done scan to eof\n"); } @@ -75,18 +75,18 @@ LEX *lex_close_file(LEX *lf) { LEX *of; - Dmsg1(40, "Close lex file: %s\n", lf->fname); + Dmsg1(900, "Close lex file: %s\n", lf->fname); if (lf == NULL) { Emsg0(M_ABORT, 0, "Close of NULL file\n"); } of = lf->next; fclose(lf->fd); - Dmsg1(49, "Close cfg file %s\n", lf->fname); + Dmsg1(900, "Close cfg file %s\n", lf->fname); free(lf->fname); if (of) { of->options = lf->options; /* preserve options */ memcpy(lf, of, sizeof(LEX)); - Dmsg1(49, "Restart scan of cfg file %s\n", of->fname); + Dmsg1(900, "Restart scan of cfg file %s\n", of->fname); } else { of = lf; lf = NULL; @@ -118,7 +118,7 @@ LEX *lex_open_file(LEX *lf, char *filename, LEX_ERROR_HANDLER *scan_error) Emsg2(M_ERROR_TERM, 0, _("Cannot open config file %s: %s\n"), fname, strerror(errno)); } - Dmsg1(49, "Open config file: %s\n", fname); + Dmsg1(900, "Open config file: %s\n", fname); nf = (LEX *)malloc(sizeof(LEX)); if (lf) { memcpy(nf, lf, sizeof(LEX)); @@ -138,7 +138,7 @@ LEX *lex_open_file(LEX *lf, char *filename, LEX_ERROR_HANDLER *scan_error) } else { lf->scan_error = s_err; } - Dmsg1(49, "Return lex=%x\n", lf); + Dmsg1(900, "Return lex=%x\n", lf); return lf; } @@ -280,12 +280,12 @@ lex_get_token(LEX *lf, int expect) int token = T_NONE; int esc_next = FALSE; - Dmsg0(290, "enter lex_get_token\n"); + Dmsg0(900, "enter lex_get_token\n"); while (token == T_NONE) { ch = lex_get_char(lf); switch (lf->state) { case lex_none: - Dmsg2(290, "Lex state lex_none ch=%d,%x\n", ch, ch); + Dmsg2(900, "Lex state lex_none ch=%d,%x\n", ch, ch); if (B_ISSPACE(ch)) break; if (B_ISALPHA(ch)) { @@ -301,11 +301,11 @@ lex_get_token(LEX *lf, int expect) begin_str(lf, ch); break; } - Dmsg0(290, "Enter lex_none switch\n"); + Dmsg0(900, "Enter lex_none switch\n"); switch (ch) { case L_EOF: token = T_EOF; - Dmsg0(290, "got L_EOF set token=T_EOF\n"); + Dmsg0(900, "got L_EOF set token=T_EOF\n"); break; case '#': lf->state = lex_comment; @@ -334,7 +334,7 @@ lex_get_token(LEX *lf, int expect) token = T_EOL; /* treat ; like EOL */ break; case L_EOL: - Dmsg0(290, "got L_EOL set token=T_EOL\n"); + Dmsg0(900, "got L_EOL set token=T_EOL\n"); token = T_EOL; break; case '@': @@ -348,7 +348,7 @@ lex_get_token(LEX *lf, int expect) } break; case lex_comment: - Dmsg1(290, "Lex state lex_comment ch=%x\n", ch); + Dmsg1(900, "Lex state lex_comment ch=%x\n", ch); if (ch == L_EOL) { lf->state = lex_none; token = T_EOL; @@ -357,7 +357,7 @@ lex_get_token(LEX *lf, int expect) } break; case lex_number: - Dmsg2(290, "Lex state lex_number ch=%x %c\n", ch, ch); + Dmsg2(900, "Lex state lex_number ch=%x %c\n", ch, ch); if (ch == L_EOF) { token = T_ERROR; break; @@ -382,10 +382,10 @@ lex_get_token(LEX *lf, int expect) token = T_ERROR; break; } - Dmsg1(290, "Lex state lex_ip_addr ch=%x\n", ch); + Dmsg1(900, "Lex state lex_ip_addr ch=%x\n", ch); break; case lex_string: - Dmsg1(290, "Lex state lex_string ch=%x\n", ch); + Dmsg1(900, "Lex state lex_string ch=%x\n", ch); if (ch == L_EOF) { token = T_ERROR; break; @@ -400,7 +400,7 @@ lex_get_token(LEX *lf, int expect) add_str(lf, ch); break; case lex_identifier: - Dmsg2(290, "Lex state lex_identifier ch=%x %c\n", ch, ch); + Dmsg2(900, "Lex state lex_identifier ch=%x %c\n", ch, ch); if (B_ISALPHA(ch)) { add_str(lf, ch); break; @@ -423,7 +423,7 @@ lex_get_token(LEX *lf, int expect) add_str(lf, ch); break; case lex_quoted_string: - Dmsg2(290, "Lex state lex_quoted_string ch=%x %c\n", ch, ch); + Dmsg2(900, "Lex state lex_quoted_string ch=%x %c\n", ch, ch); if (ch == L_EOF) { token = T_ERROR; break; @@ -462,10 +462,10 @@ lex_get_token(LEX *lf, int expect) add_str(lf, ch); break; } - Dmsg4(290, "ch=%d state=%s token=%s %c\n", ch, lex_state_to_str(lf->state), + Dmsg4(900, "ch=%d state=%s token=%s %c\n", ch, lex_state_to_str(lf->state), lex_tok_to_str(token), ch); } - Dmsg2(290, "lex returning: line %d token: %s\n", lf->line_no, lex_tok_to_str(token)); + Dmsg2(900, "lex returning: line %d token: %s\n", lf->line_no, lex_tok_to_str(token)); lf->token = token; /* @@ -519,7 +519,7 @@ lex_get_token(LEX *lf, int expect) break; case T_INT64: - Dmsg2(400, "int64=:%s: %f\n", lf->str, strtod(lf->str, NULL)); + Dmsg2(900, "int64=:%s: %f\n", lf->str, strtod(lf->str, NULL)); if (token != T_NUMBER || !is_a_number(lf->str)) { scan_err2(lf, "expected an integer number, got %s: %s", lex_tok_to_str(token), lf->str); diff --git a/bacula/src/version.h b/bacula/src/version.h index 0f403a0d1a..f3d1854935 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -2,8 +2,8 @@ #undef VERSION #define VERSION "1.32" #define VSTRING "1" -#define BDATE "12 Sep 2003" -#define LSMDATE "12Sep03" +#define BDATE "16 Sep 2003" +#define LSMDATE "16Sep03" /* Debug flags */ #undef DEBUG