]> git.sur5r.net Git - bacula/bacula/commitdiff
list nextvol + retry waitpid on intr
authorKern Sibbald <kern@sibbald.com>
Mon, 15 Sep 2003 21:07:07 +0000 (21:07 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 15 Sep 2003 21:07:07 +0000 (21:07 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@703 91ce42f0-d328-0410-95d8-f526ca767f89

12 files changed:
bacula/ReleaseNotes
bacula/kernstodo
bacula/src/console.glade
bacula/src/dird/newvol.c
bacula/src/dird/protos.h
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_output.c
bacula/src/dird/ua_status.c
bacula/src/lib/bpipe.c
bacula/src/lib/bsys.c
bacula/src/lib/lex.c
bacula/src/version.h

index d86744ebe9156cf315efd50aba27e9bc1aa5b9b9..c12647cb8c727f1e7ac1ef4abdd3b3e70744c596 100644 (file)
@@ -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)
index 5509159166c000a4c33de45d7e73b42951fa31ad..b392013a4240f6b8f0186cb2f5a16451bb3359c5 100644 (file)
@@ -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 
index c9509b3c366456cdfd87eedbf5e56c3aef58ead9..7a3d2008329bdd3de7214c02a560473d3c5133e6 100644 (file)
@@ -18,8 +18,6 @@
 <widget>
   <class>GtkWindow</class>
   <name>app1</name>
-  <width>800</width>
-  <height>500</height>
   <signal>
     <name>delete_event</name>
     <handler>on_app1_delete_event</handler>
   <type>GTK_WINDOW_TOPLEVEL</type>
   <position>GTK_WIN_POS_CENTER</position>
   <modal>False</modal>
-  <default_height>500</default_height>
   <allow_shrink>True</allow_shrink>
   <allow_grow>True</allow_grow>
-  <auto_shrink>False</auto_shrink>
+  <auto_shrink>True</auto_shrink>
 
   <widget>
     <class>GtkVBox</class>
   <type>GTK_WINDOW_TOPLEVEL</type>
   <position>GTK_WIN_POS_CENTER</position>
   <modal>True</modal>
-  <allow_shrink>False</allow_shrink>
-  <allow_grow>False</allow_grow>
+  <allow_shrink>True</allow_shrink>
+  <allow_grow>True</allow_grow>
   <auto_shrink>False</auto_shrink>
 
   <widget>
index 380c8c98ba617bf244477c9566bc6833227cf669..f449fa9f2fc7f82cb468b3b814f088cf38ed5180 100644 (file)
@@ -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.
  */
index 5ec7d8d6ce5869208eb82482c528f830159f1aec..e54713823d9115ecb57e6b9ee1030d8e642c1ffe 100644 (file)
@@ -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);
index 1273b0c83bae7406b036a9cb9f71aa363ffbb296..b4540a543c3067e71fff222e83963fed5ebd31a4 100644 (file)
@@ -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 <pool> | files job=<nn>]; from catalog")},
- { N_("llist"),      llistcmd,      _("full or long list like list command")},
+ { N_("list"),       list_cmd,      _("list [pools | jobs | jobtotals | media <pool> | files job=<nn>]; from catalog")},
+ { N_("llist"),      llist_cmd,     _("full or long list like list command")},
  { N_("messages"),   messagescmd,   _("messages")},
  { N_("mount"),      mount_cmd,     _("mount <storage-name>")},
  { N_("prune"),      prunecmd,      _("prune expired records from catalog")},
index 8723e0887544a49a2cd903b027a5bb40a14f1501..b79001982e9d941adf14c83b8e4156f3263521f0 100644 (file)
@@ -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);
index 2ba3a70ec49d45ce3af2e8b7044dfbd9708f9cbe..a8196d87365c7c0a941fbdbf153cf44bf6d3e923 100644 (file)
@@ -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 */ 
index 0a00caf73cc53c2bc2799b16e2192239d24b6ec1..a44290b75d61912f4c3a35343bbe2ff616cc6624 100644 (file)
@@ -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;
index 5141515ff1c8c32c7152808e4e59693ed23f48bf..da3fd7c1761713ab4d8fa8ebe164b5d4ed4315a4 100644 (file)
@@ -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;
index 88dcfe1b4e7cd7bb885d86c4e175854fd15dd4c1..04131d7171b146ff7516b30b04e1ac80563129c8 100644 (file)
@@ -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);
index 0f403a0d1a5ac9963e51474bcfadaa5657ad73a3..f3d18549351fcd645013e3564815792e0b108a4f 100644 (file)
@@ -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