]> git.sur5r.net Git - bacula/bacula/commitdiff
Add Peter Eriksson's const code + turn bsscanf code
authorKern Sibbald <kern@sibbald.com>
Tue, 15 Jun 2004 10:40:48 +0000 (10:40 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 15 Jun 2004 10:40:48 +0000 (10:40 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1421 91ce42f0-d328-0410-95d8-f526ca767f89

97 files changed:
bacula/kernstodo
bacula/src/baconfig.h
bacula/src/cats/bdb_find.c
bacula/src/cats/cats.h
bacula/src/cats/mysql.c
bacula/src/cats/postgresql.c
bacula/src/cats/protos.h
bacula/src/cats/sql.c
bacula/src/cats/sql_create.c
bacula/src/cats/sql_delete.c
bacula/src/cats/sql_find.c
bacula/src/cats/sql_get.c
bacula/src/cats/sql_list.c
bacula/src/cats/sql_update.c
bacula/src/cats/sqlite.c
bacula/src/console/authenticate.c
bacula/src/console/console.c
bacula/src/console/console_conf.c
bacula/src/console/console_conf.h
bacula/src/dird/admin.c
bacula/src/dird/authenticate.c
bacula/src/dird/backup.c
bacula/src/dird/catreq.c
bacula/src/dird/dird_conf.c
bacula/src/dird/dird_conf.h
bacula/src/dird/expand.c
bacula/src/dird/fd_cmds.c
bacula/src/dird/getmsg.c
bacula/src/dird/inc_conf.c
bacula/src/dird/job.c
bacula/src/dird/next_vol.c
bacula/src/dird/protos.h
bacula/src/dird/recycle.c
bacula/src/dird/restore.c
bacula/src/dird/run_conf.c
bacula/src/dird/scheduler.c
bacula/src/dird/sql_cmds.c
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_dotcmds.c
bacula/src/dird/ua_input.c
bacula/src/dird/ua_label.c
bacula/src/dird/ua_output.c
bacula/src/dird/ua_prune.c
bacula/src/dird/ua_purge.c
bacula/src/dird/ua_query.c
bacula/src/dird/ua_restore.c
bacula/src/dird/ua_run.c
bacula/src/dird/ua_select.c
bacula/src/dird/ua_server.c
bacula/src/dird/ua_status.c
bacula/src/dird/ua_tree.c
bacula/src/dird/verify.c
bacula/src/filed/filed_conf.c
bacula/src/filed/job.c
bacula/src/filed/status.c
bacula/src/findlib/match.c
bacula/src/findlib/protos.h
bacula/src/lib/bnet.c
bacula/src/lib/bnet_server.c
bacula/src/lib/cram-md5.c
bacula/src/lib/dlist.c
bacula/src/lib/dlist.h
bacula/src/lib/mem_pool.c
bacula/src/lib/message.c
bacula/src/lib/message.h
bacula/src/lib/parse_conf.c
bacula/src/lib/parse_conf.h
bacula/src/lib/protos.h
bacula/src/lib/scan.c
bacula/src/lib/serial.c
bacula/src/lib/serial.h
bacula/src/lib/util.c
bacula/src/lib/var.c
bacula/src/lib/var.h
bacula/src/stored/askdir.c
bacula/src/stored/autochanger.c
bacula/src/stored/bcopy.c
bacula/src/stored/block.c
bacula/src/stored/bls.c
bacula/src/stored/bscan.c
bacula/src/stored/btape.c
bacula/src/stored/butil.c
bacula/src/stored/dev.c
bacula/src/stored/device.c
bacula/src/stored/dircmd.c
bacula/src/stored/fd_cmds.c
bacula/src/stored/label.c
bacula/src/stored/parse_bsr.c
bacula/src/stored/protos.h
bacula/src/stored/read_record.c
bacula/src/stored/record.c
bacula/src/stored/spool.c
bacula/src/stored/status.c
bacula/src/stored/stored_conf.c
bacula/src/tools/bsmtp.c
bacula/src/tools/dbcheck.c
bacula/src/version.h

index 0aef6ef34a2369e8eb6288ce54e2689f8815a5ac..dbebad1ad102ae2aaf04432e6fef9d9487b0ab8b 100644 (file)
@@ -12,6 +12,8 @@
    The error I when I installed 1.34.2 clients:
    The BACULA-FD file is  
    linked to missing export KERNEL32.DLL:GetFileAttributesExA.
+- Add link to doc in message when authentication fails.
+- Add db_ensure...slot_unique to BDB.
 
 
 Documentation to do: (any release a little bit at a time)
@@ -1066,4 +1068,3 @@ Block Position: 0
   mount it.
 - Implement Fixed storage LabelFormat test.
 - Add reporting in attr despooling.
-
index 9006695bf005f391f82a4a6e9ffcaf71f79c39a5..9153d271178ff0b9d1f30c0e608593c185080356 100644 (file)
@@ -423,7 +423,7 @@ int  m_msg(const char *file, int line, POOLMEM **msgbuf, const char *fmt,...);
 #define fgets(x,y,z) bfgets((x), (y), (z))
 
 /* Use our sscanf, which is safer and works with known sizes */
-// #define sscanf bsscanf
+#define sscanf bsscanf
 
 #ifdef DEBUG
 #define bstrdup(str) strcpy((char *)b_malloc(__FILE__,__LINE__,strlen((str))+1),(str))
index f83b91e7dc4684ef576bfa578d571c12e33825a1..eed75e9b13e5beda80d2e8fa25f8a508b6530f0e 100644 (file)
@@ -180,7 +180,7 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr
 }
 
 int
-db_find_last_jobid(JCR *jcr, B_DB *mdb, char *Name, JOB_DBR *jr)
+db_find_last_jobid(JCR *jcr, B_DB *mdb, const char *Name, JOB_DBR *jr)
 { return 0; }
 
 
index 4c6355a7c4e1e906fca90ec6f71091b4b7ac48e4..88e49f90f1e5f8aa7cff555930c5f96725013210 100644 (file)
@@ -38,7 +38,7 @@
 #define __SQL_H_ 1
 
 
-typedef void (DB_LIST_HANDLER)(void *, char *);
+typedef void (DB_LIST_HANDLER)(void *, const char *);
 typedef int (DB_RESULT_HANDLER)(void *, int, char **);
 
 #define db_lock(mdb)   _db_lock(__FILE__, __LINE__, mdb)
@@ -587,7 +587,7 @@ void list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, e_list_type type);
 void list_dashes(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx);
 int get_sql_record_max(JCR *jcr, B_DB *mdb);
 int check_tables_version(JCR *jcr, B_DB *mdb);
-void _db_unlock(char *file, int line, B_DB *mdb);
-void _db_lock(char *file, int line, B_DB *mdb);
+void _db_unlock(const char *file, int line, B_DB *mdb);
+void _db_lock(const char *file, int line, B_DB *mdb);
  
 #endif /* __SQL_H_ */
index 48843840b51adc7e434b27da7275644271e20667..9352f00ede97f38e1c5dc08642a1f43574a55098 100644 (file)
@@ -56,8 +56,8 @@ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  * never have errors, or it is really fatal.
  */
 B_DB *
-db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password, 
-                char *db_address, int db_port, char *db_socket) 
+db_init_database(JCR *jcr, const char *db_name, const char *db_user, const char *db_password, 
+                const char *db_address, int db_port, const char *db_socket) 
 {
    B_DB *mdb;
 
@@ -316,7 +316,7 @@ unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from,
  * Submit a general SQL command (cmd), and for each row returned,
  *  the sqlite_handler is called with the ctx.
  */
-int db_sql_query(B_DB *mdb, char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
    SQL_ROW row;
   
index 655da79993d516e201bb028fb4942ccb525262ac..9dfa401e3f4ea1d4c5ac8ef0050dce5c872b5258 100644 (file)
@@ -58,8 +58,8 @@ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  * never have errors, or it is really fatal.
  */
 B_DB *
-db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password, 
-                char *db_address, int db_port, char *db_socket) 
+db_init_database(JCR *jcr, const char *db_name, const char *db_user, const char *db_password, 
+                const char *db_address, int db_port, const char *db_socket) 
 {
    B_DB *mdb;
 
@@ -255,7 +255,7 @@ db_escape_string(char *snew, char *old, int len)
  * Submit a general SQL command (cmd), and for each row returned,
  *  the sqlite_handler is called with the ctx.
  */
-int db_sql_query(B_DB *mdb, char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
    SQL_ROW row;
 
index 9570c06f164e9aa27b856429ce27df8bc0198ce4..dc6e5ef6dc679f3c1f910b99606a92fda32767c0 100644 (file)
 /* Database prototypes */
 
 /* sql.c */
-B_DB *db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password, 
-                       char *db_address, int db_port, char *db_socket);
+B_DB *db_init_database(JCR *jcr, const char *db_name, const char *db_user, const char *db_password, 
+                       const char *db_address, int db_port, const char *db_socket);
 int  db_open_database(JCR *jcr, B_DB *db);
 void db_close_database(JCR *jcr, B_DB *db);
 void db_escape_string(char *snew, char *old, int len);
 char *db_strerror(B_DB *mdb);
 int  db_next_index(JCR *jcr, B_DB *mdb, char *table, char *index);
-int  db_sql_query(B_DB *mdb, char *cmd, DB_RESULT_HANDLER *result_handler, void *ctx);
+int  db_sql_query(B_DB *mdb, const char *cmd, DB_RESULT_HANDLER *result_handler, void *ctx);
 void db_start_transaction(JCR *jcr, B_DB *mdb);
 void db_end_transaction(JCR *jcr, B_DB *mdb);
 
@@ -61,7 +61,7 @@ int db_delete_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr);
 
 /* find.c */
 int db_find_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime);
-int db_find_last_jobid(JCR *jcr, B_DB *mdb, char *Name, JOB_DBR *jr);
+int db_find_last_jobid(JCR *jcr, B_DB *mdb, const char *Name, JOB_DBR *jr);
 int db_find_next_volume(JCR *jcr, B_DB *mdb, int index, bool InChanger, MEDIA_DBR *mr);
 
 /* get.c */
index af3cdb11e2c154b8dc411db9d20dc026b156388c..e80caec2a1d06c5417455c88d4f6e811e9e26919 100644 (file)
@@ -74,7 +74,7 @@ static int int_handler(void *ctx, int num_fields, char **row)
 /* Check that the tables correspond to the version we want */
 int check_tables_version(JCR *jcr, B_DB *mdb)
 {
-   char *query = "SELECT VersionId FROM Version";
+   const char *query = "SELECT VersionId FROM Version";
   
    bacula_db_version = 0;
    db_sql_query(mdb, query, int_handler, (void *)&bacula_db_version);
@@ -89,7 +89,7 @@ int check_tables_version(JCR *jcr, B_DB *mdb)
 
 /* Utility routine for queries. The database MUST be locked before calling here. */
 int
-QueryDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
+QueryDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
 {
    int status;
    if ((status=sql_query(mdb, cmd)) != 0) {
@@ -112,7 +112,7 @@ QueryDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
  *         1 on success
  */
 int
-InsertDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
+InsertDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
 {
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg,  _("insert %s failed:\n%s\n"), cmd, sql_strerror(mdb));
@@ -145,7 +145,7 @@ InsertDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
  *          1 on success  
  */
 int
-UpdateDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
+UpdateDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
 {
 
    if (sql_query(mdb, cmd)) {
@@ -176,7 +176,7 @@ UpdateDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
  *          n number of rows affected
  */
 int
-DeleteDB(char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
+DeleteDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
 {
 
    if (sql_query(mdb, cmd)) {
@@ -232,7 +232,7 @@ char *db_strerror(B_DB *mdb)
  *   thread without blocking, but must be unlocked the number of
  *   times it was locked.
  */
-void _db_lock(char *file, int line, B_DB *mdb)
+void _db_lock(const char *file, int line, B_DB *mdb)
 {
    int errstat;
    if ((errstat=rwl_writelock(&mdb->lock)) != 0) {
@@ -246,7 +246,7 @@ void _db_lock(char *file, int line, B_DB *mdb)
  *   same thread up to the number of times that thread called
  *   db_lock()/
  */
-void _db_unlock(char *file, int line, B_DB *mdb)
+void _db_unlock(const char *file, int line, B_DB *mdb)
 {
    int errstat;
    if ((errstat=rwl_writeunlock(&mdb->lock)) != 0) {
index 9720b1f16e0a26dda73fde7843a14303657ec6fd..2d2a38c81b6886d65aa72745f53668cb69e29f07 100644 (file)
@@ -52,9 +52,9 @@ static int db_create_path_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar);
 /* Imported subroutines */
 extern void print_dashes(B_DB *mdb);
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
-extern int InsertDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
-extern int UpdateDB(char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
+extern int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+extern int InsertDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+extern int UpdateDB(const char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
 extern void split_path_and_file(JCR *jcr, B_DB *mdb, const char *fname);
 
 
index 1a3bf4760ff2d003a66621cd21c96843058a0cad..aece65b648e8614cb8bba9ec94ae59af8548236a 100644 (file)
@@ -48,8 +48,8 @@
 /* Imported subroutines */
 extern void print_dashes(B_DB *mdb);
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
-extern int DeleteDB(char *file, int line, JCR *jcr, B_DB *db, char *delete_cmd);
+extern int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+extern int DeleteDB(const char *file, int line, JCR *jcr, B_DB *db, char *delete_cmd);
        
 /*
  * Delete Pool record, must also delete all associated
index 6ba773dbe01d1a89adc029ab744f88db0a3823a1..66229bd2562e561e94393319020c637373498209 100644 (file)
@@ -50,7 +50,7 @@
 
 /* Imported subroutines */
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+extern int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 
 /*
  * Find job start time if JobId specified, otherwise
@@ -151,7 +151,7 @@ db_find_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime)
  *         0 on failure
  */
 int
-db_find_last_jobid(JCR *jcr, B_DB *mdb, char *Name, JOB_DBR *jr)
+db_find_last_jobid(JCR *jcr, B_DB *mdb, const char *Name, JOB_DBR *jr)
 {
    SQL_ROW row;
 
@@ -218,7 +218,7 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr
 {
    SQL_ROW row;
    int numrows;
-   char *changer, *order;
+   const char *changer, *order;
 
    db_lock(mdb);
    if (item == -1) {      /* find oldest volume */
index d02d251ac079b0eaf5d16fff20f507768cfd7180..b340e7ac19f5c36fc8879863f3822a644bb66e6e 100644 (file)
@@ -55,7 +55,7 @@ static int db_get_path_record(JCR *jcr, B_DB *mdb);
 
 /* Imported subroutines */
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+extern int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 extern void split_path_and_file(JCR *jcr, B_DB *mdb, const char *fname);
 
 
index e5a62539257598c9eb7129355339b98ddba3e566..887f75e4fee986eee7d689673b74e77d690fb83f 100644 (file)
@@ -45,7 +45,7 @@
 
 /* Imported subroutines */
 extern void list_result(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
-extern int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+extern int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 
 
 /* 
index a5364644a06290b05c0fe18dbac0ef6caa5f90cb..4c7bc5899e8675885bef870f5f7d1d9d196ff4c0 100644 (file)
@@ -45,7 +45,7 @@
 
 /* Imported subroutines */
 extern void print_result(B_DB *mdb);
-extern int UpdateDB(char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
+extern int UpdateDB(const char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
 
 /* -----------------------------------------------------------------------
  *
index 344dc88ca0f282f6b65f0611aa93de3b710bda1d..db0914a1da24f031e2af9eaae240e9401bd33201 100644 (file)
  * -----------------------------------------------------------------------
  */
 
-extern char *working_directory;
+extern const char *working_directory;
 
 /* List of open databases */
 static BQUEUE db_list = {&db_list, &db_list};
 
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
-int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
+int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 
 
 /*
@@ -59,8 +59,8 @@ int QueryDB(char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
  * never have errors, or it is really fatal.
  */
 B_DB *
-db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password,
-                char *db_address, int db_port, char *db_socket) 
+db_init_database(JCR *jcr, const char *db_name, const char *db_user, const char *db_password,
+                const char *db_address, int db_port, const char *db_socket) 
 {
    B_DB *mdb;
 
@@ -283,7 +283,7 @@ static int sqlite_result(void *arh_data, int num_fields, char **rows, char **col
  * Submit a general SQL command (cmd), and for each row returned,
  *  the sqlite_handler is called with the ctx.
  */
-int db_sql_query(B_DB *mdb, char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
    struct rh_data rh_data;
    int stat;
index 09704476498f92c140a21aae77f6232eddb66b0a..23fb727b679a1436e38d324b854f8fd67d130276 100644 (file)
@@ -34,8 +34,8 @@
 #include "jcr.h"
 
 
-void senditf(char *fmt, ...);
-void sendit(char *buf); 
+void senditf(const char *fmt, ...);
+void sendit(const char *buf); 
 
 /* Commands sent to Director */
 static char hello[]    = "Hello %s calling\n";
index 555e9332cd7aa4ce9c7ea8169d92119be1c378f2..a59dc3eefc36bd967fad0f8f0248a6394e8c9263 100644 (file)
@@ -63,10 +63,10 @@ int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons);
 
 /* Forward referenced functions */
 static void terminate_console(int sig);
-int get_cmd(FILE *input, char *prompt, BSOCK *sock, int sec);
+int get_cmd(FILE *input, const char *prompt, BSOCK *sock, int sec);
 static int do_outputcmd(FILE *input, BSOCK *UA_sock);
-void senditf(char *fmt, ...);
-void sendit(char *buf);
+void senditf(const char *fmt, ...);
+void sendit(const char *buf);
 
 /* Static variables */
 static char *configfile = NULL;
@@ -97,7 +97,7 @@ static void usage()
 {
    fprintf(stderr, _(
 "\nVersion: " VERSION " (" BDATE ") %s %s %s\n\n"
-"Usage: bconsole [-s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bconsole [-s] [-c config_file] [-d debug_level]\n"
 "       -c <file>   set configuration file to file\n"
 "       -dnn        set debug level to nn\n"
 "       -s          no signals\n"
@@ -135,7 +135,7 @@ static int zed_keyscmd(FILE *input, BSOCK *UA_sock)
 /*
  * These are the @command
  */
-struct cmdstruct { char *key; int (*func)(FILE *input, BSOCK *UA_sock); char *help; }; 
+struct cmdstruct { const char *key; int (*func)(FILE *input, BSOCK *UA_sock); const char *help; }; 
 static struct cmdstruct commands[] = {
  { N_("input"),      inputcmd,     _("input from file")},
  { N_("output"),     outputcmd,    _("output to file")},
@@ -188,7 +188,7 @@ static int do_a_command(FILE *input, BSOCK *UA_sock)
 
 static void read_and_process_input(FILE *input, BSOCK *UA_sock) 
 {
-   char *prompt = "*";
+   const char *prompt = "*";
    bool at_prompt = false;
    int tty_input = isatty(fileno(input));
    int stat;
@@ -492,7 +492,7 @@ static void terminate_console(int sig)
 
 
 int 
-get_cmd(FILE *input, char *prompt, BSOCK *sock, int sec)
+get_cmd(FILE *input, const char *prompt, BSOCK *sock, int sec)
 {
    char *line;
 
@@ -554,7 +554,7 @@ wait_for_data(int fd, int sec)
  *          -1 if EOF or error
  */
 int 
-get_cmd(FILE *input, char *prompt, BSOCK *sock, int sec)
+get_cmd(FILE *input, const char *prompt, BSOCK *sock, int sec)
 {
    int len;  
    if (!stop) {
@@ -643,7 +643,7 @@ static int outputcmd(FILE *input, BSOCK *UA_sock)
 static int do_outputcmd(FILE *input, BSOCK *UA_sock)
 {
    FILE *fd;
-   char *mode = "a+";
+   const char *mode = "a+";
 
    if (argc > 3) {
       sendit(_("Too many arguments on output/tee command.\n"));
@@ -698,7 +698,7 @@ static int timecmd(FILE *input, BSOCK *UA_sock)
 /*
  * Send a line to the output file and or the terminal
  */
-void senditf(char *fmt,...)
+void senditf(const char *fmt,...)
 {
     char buf[3000];
     va_list arg_ptr;
@@ -709,7 +709,7 @@ void senditf(char *fmt,...)
     sendit(buf);
 }
 
-void sendit(char *buf)
+void sendit(const char *buf)
 {
 #ifdef xHAVE_CONIO
     if (output == stdout || tee) {
index 1fade95c5fc9336eb823d3c9a09e042f1d28504c..6fbfbe75d3281930bf393230d8737acf3414d977 100644 (file)
@@ -106,7 +106,7 @@ RES_TABLE resources[] = {
 
 
 /* Dump contents of resource */
-void dump_resource(int type, RES *reshdr, void sendit(void *sock, char *fmt, ...), void *sock)
+void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
 {
    URES *res = (URES *)reshdr;
    int recurse = 1;
index 852b24741c52d18972d31953af02f7548b04632b..55e5c87c58d763c930457561a653813136802acb 100644 (file)
@@ -25,7 +25,7 @@ enum {
    R_ADDRESS,
    R_PASSWORD,
    R_TYPE,
-   R_BACKUP,
+   R_BACKUP
 };
 
 
index 698e49e84e2d11afa3729e2f190d746279052b65..9a2288b7b20870f8fdbc425bcdd3d281bb353323 100644 (file)
@@ -76,7 +76,7 @@ static void admin_cleanup(JCR *jcr, int TermCode)
 {
    char sdt[50], edt[50];
    char term_code[100];
-   char *term_msg;
+   const char *term_msg;
    int msg_type;
    MEDIA_DBR mr;
 
index 156d68330abcc6b6178618daae99a3656ef5c9f8..c2522be1facaf1ffad21c7ded04779861dacfb95 100644 (file)
@@ -45,7 +45,7 @@ static char OKhello[]   = "3000 OK Hello\n";
 static char FDOKhello[] = "2000 OK Hello\n";
 
 /* Sent to User Agent */
-static char Dir_sorry[]  = N_("1999 You are not authorized.\n");
+static char Dir_sorry[]  = "1999 You are not authorized.\n";
 
 /* Forward referenced functions */
 
index f6db260141c8577f23d6b6b9e831bd758137d4f2..0d4de906d9fac0904726da22224efcc6febe49d1 100644 (file)
@@ -310,7 +310,7 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since, FILESET_DBR *fsr
    char sdt[50], edt[50];
    char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], compress[50];
    char term_code[100], fd_term_msg[100], sd_term_msg[100];
-   char *term_msg;
+   const char *term_msg;
    int msg_type;
    MEDIA_DBR mr;
    double kbps, compression;
index 14fd97202ba56a40e18f05b38e83a4ed944fcdd6..c3b425053640fea7714bf4777ea0f5ffe3944504 100644 (file)
@@ -123,7 +123,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
        */
       unbash_spaces(mr.VolumeName);
       if (db_get_media_record(jcr, jcr->db, &mr)) {
-        char *reason = NULL;         /* detailed reason for rejection */
+        const char *reason = NULL;           /* detailed reason for rejection */
         /*                   
          * If we are reading, accept any volume (reason == NULL)
          * If we are writing, check if the Volume is valid 
index cec5e72b0d68bd5a9875f9334f422b46c3b58d3e..bbb568aeaade81ff0fc2c0b59eee3b87c449caf3 100644 (file)
@@ -397,11 +397,11 @@ struct s_kw ReplaceOptions[] = {
    {NULL,              0}
 };
 
-char *level_to_str(int level)
+const char *level_to_str(int level)
 {
    int i;
    static char level_no[30];
-   char *str = level_no;
+   const char *str = level_no;
 
    bsnprintf(level_no, sizeof(level_no), "%d", level);    /* default if not found */
    for (i=0; joblevels[i].level_name; i++) {
@@ -414,7 +414,7 @@ char *level_to_str(int level)
 }
 
 /* Dump contents of resource */
-void dump_resource(int type, RES *reshdr, void sendit(void *sock, char *fmt, ...), void *sock)
+void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
 {
    URES *res = (URES *)reshdr;
    bool recurse = true;
index 58eb7e0058c40d551117504e6651fe5fb3a1ae0e..236e15cfd188141654a75ddcf9f699f1a9971147 100644 (file)
@@ -62,20 +62,20 @@ enum {
 
 /* Used for certain KeyWord tables */
 struct s_kw {       
-   char *name;
+   const char *name;
    int token;   
 };
 
 /* Job Level keyword structure */
 struct s_jl {
-   char *level_name;                  /* level keyword */
+   const char *level_name;                  /* level keyword */
    int  level;                        /* level */
    int  job_type;                     /* JobType permitting this level */
 };
 
 /* Job Type keyword structure */
 struct s_jt {
-   char *type_name;
+   const char *type_name;
    int job_type;
 };
 
index 1466ace59187589899e317391aa11217ca671228..112da2fe121906520782b356dd1e0fb9955899dc 100644 (file)
@@ -74,7 +74,7 @@ static int date_item(JCR *jcr, int code,
 static int job_item(JCR *jcr, int code, 
              const char **val_ptr, int *val_len, int *val_size)
 {
-   char *str = " ";
+   const char *str = " ";
    char buf[20];
 
    switch (code) {
@@ -127,7 +127,7 @@ static int job_item(JCR *jcr, int code,
 }
 
 
-struct s_built_in_vars {char *var_name; int code; int (*func)(JCR *jcr, int code,
+struct s_built_in_vars {const char *var_name; int code; int (*func)(JCR *jcr, int code,
                         const char **val_ptr, int *val_len, int *val_size);};
 
 /*
index 28fd36ae852a4964e9af85a1a2c654275c5b86fc..bf26e7b68c661c2d840278f33cc2cd9729d3c76b 100644 (file)
@@ -513,7 +513,7 @@ int send_bootstrap_file(JCR *jcr)
    FILE *bs;
    char buf[1000];
    BSOCK *fd = jcr->file_bsock;
-   char *bootstrap = "bootstrap\n";
+   const char *bootstrap = "bootstrap\n";
 
    Dmsg1(400, "send_bootstrap_file: %s\n", jcr->RestoreBootstrap);
    if (!jcr->RestoreBootstrap) {
index f0da7debfbd79db3172c7801ee6ee33e38c6aa51..50546e75c57a74c2749c34089d9ac63d7702e302 100644 (file)
@@ -214,7 +214,7 @@ static char *find_msg_start(char *msg)
  *  Returns: 0 on failure
  *          1 on success
  */
-int response(JCR *jcr, BSOCK *fd, char *resp, char *cmd, e_prtmsg prtmsg)
+int response(JCR *jcr, BSOCK *fd, char *resp, const char *cmd, e_prtmsg prtmsg)
 {
    int n;
 
index deb600e0985da87d6220db06b6aebb25ab8b6830..f363e99caf94c80c05d88a0b506e0963da6eea97 100644 (file)
@@ -133,9 +133,9 @@ static struct s_kw FS_option_kw[] = {
 /* Options for FileSet keywords */
 
 struct s_fs_opt {
-   char *name;
+   const char *name;
    int keyword;
-   char *option;
+   const char *option;
 };
 
 /*
index f26f2b369ca3a7f6ab633bfb557467c9b2a6b152..de336b01af3a09741ee7ed58ab46e5fc90173922 100644 (file)
@@ -571,7 +571,7 @@ void update_job_end_record(JCR *jcr)
  *  Returns: unique job name in jcr->Job
  *    date/time in jcr->start_time
  */
-void create_unique_job_name(JCR *jcr, char *base_name)
+void create_unique_job_name(JCR *jcr, const char *base_name)
 {
    /* Job start mutex */
    static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
index 5063edf12273041e66839b756bef958a106ff33a..687d85cdf872b5b9ba18d4dabff1280a6e7e91f0 100644 (file)
@@ -214,7 +214,7 @@ bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr)
  *  Returns: on failure - reason = NULL
  *          on success - reason - pointer to reason
  */
-void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, char **reason)
+void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **reason)
 {
    int ok;
 
index d7266a12df85ab11c583b53e3646f32dbebef3ff..12463f2ee42a201376854384fab0321c442580ea 100644 (file)
@@ -54,7 +54,7 @@ extern void catalog_request(JCR *jcr, BSOCK *bs, char *buf);
 extern void catalog_update(JCR *jcr, BSOCK *bs, char *buf);
 
 /* dird_conf.c */
-extern char *level_to_str(int level);
+extern const char *level_to_str(int level);
 
 /* expand.c */
 int variable_expansion(JCR *jcr, char *inp, POOLMEM **exp);
@@ -79,11 +79,11 @@ enum e_prtmsg {
    DISPLAY_ERROR,
    NO_DISPLAY
 };
-extern int response(JCR *jcr, BSOCK *fd, char *resp, char *cmd, e_prtmsg prtmsg);
+extern int response(JCR *jcr, BSOCK *fd, char *resp, const char *cmd, e_prtmsg prtmsg);
 
 /* job.c */
 extern void set_jcr_defaults(JCR *jcr, JOB *job);
-extern void create_unique_job_name(JCR *jcr, char *base_name);
+extern void create_unique_job_name(JCR *jcr, const char *base_name);
 extern void update_job_end_record(JCR *jcr);
 extern int get_or_create_client_record(JCR *jcr);
 extern void run_job(JCR *jcr);
@@ -103,7 +103,7 @@ extern void wait_for_storage_daemon_termination(JCR *jcr);
 /* next_vol.c */
 int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, bool create);
 bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr);
-void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, char **reason);
+void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **reason);
 
 /* newvol.c */
 bool newVolume(JCR *jcr, MEDIA_DBR *mr);
@@ -113,9 +113,9 @@ bool acl_access_ok(UAContext *ua, int acl, char *item);
 bool acl_access_ok(UAContext *ua, int acl, char *item, int len);
 
 /* ua_cmds.c */
-int do_a_command(UAContext *ua, char *cmd);
-int do_a_dot_command(UAContext *ua, char *cmd);
-int qmessagescmd(UAContext *ua, char *cmd);
+int do_a_command(UAContext *ua, const char *cmd);
+int do_a_dot_command(UAContext *ua, const char *cmd);
+int qmessagescmd(UAContext *ua, const char *cmd);
 int open_db(UAContext *ua);
 void close_db(UAContext *ua);
 enum e_pool_op {
@@ -126,23 +126,23 @@ int create_pool(JCR *jcr, B_DB *db, POOL *pool, e_pool_op op);
 void set_pool_dbr_defaults_in_media_dbr(MEDIA_DBR *mr, POOL_DBR *pr);
 
 /* ua_input.c */
-int get_cmd(UAContext *ua, char *prompt);
-int get_pint(UAContext *ua, char *prompt);
-int get_yesno(UAContext *ua, char *prompt);
+int get_cmd(UAContext *ua, const char *prompt);
+int get_pint(UAContext *ua, const char *prompt);
+int get_yesno(UAContext *ua, const char *prompt);
 void parse_ua_args(UAContext *ua);
 
 /* ua_label.c */
-bool is_volume_name_legal(UAContext *ua, char *name);
+bool is_volume_name_legal(UAContext *ua, const char *name);
 
 /* ua_output.c */
-void prtit(void *ctx, char *msg);
+void prtit(void *ctx, const char *msg);
 int complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool);
 RUN *find_next_run(RUN *run, JOB *job, time_t &runtime);
 
 /* ua_server.c */
-void bsendmsg(void *sock, char *fmt, ...);
+void bsendmsg(void *sock, const char *fmt, ...);
 UAContext *new_ua_context(JCR *jcr);
-JCR *new_control_jcr(char *base_name, int job_type);
+JCR *new_control_jcr(const char *base_name, int job_type);
 void free_ua_context(UAContext *ua);
 
 /* ua_select.c */
@@ -156,9 +156,9 @@ 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);
+void   start_prompt(UAContext *ua, const char *msg);
+void   add_prompt(UAContext *ua, const char *prompt);
+int    do_prompt(UAContext *ua, const char *automsg, const 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);
@@ -169,11 +169,11 @@ POOL   *select_pool_resource(UAContext *ua);
 CLIENT *get_client_resource(UAContext *ua);
 int    get_job_dbr(UAContext *ua, JOB_DBR *jr);
 
-int find_arg_keyword(UAContext *ua, char **list);
-int find_arg(UAContext *ua, char *keyword);
-int find_arg_with_value(UAContext *ua, char *keyword);
-int do_keyword_prompt(UAContext *ua, char *msg, char **list);
-int confirm_retention(UAContext *ua, utime_t *ret, char *msg);
+int find_arg_keyword(UAContext *ua, const char **list);
+int find_arg(UAContext *ua, const char *keyword);
+int find_arg_with_value(UAContext *ua, const char *keyword);
+int do_keyword_prompt(UAContext *ua, const char *msg, const char **list);
+int confirm_retention(UAContext *ua, utime_t *ret, const char *msg);
 
 /* ua_tree.c */
 bool user_select_files_from_tree(TREE_CTX *tree);
index c12969c97f205ec5932f3374c0b29dd0855b583b..44e4945a0fb18b2c4dc3fd46cbe60f645dd768dd 100644 (file)
@@ -71,7 +71,7 @@ int recycle_oldest_purged_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
 {
    struct s_oldest_ctx oldest;
    POOLMEM *query = get_pool_memory(PM_EMSG);
-   char *select =
+   const char *select =
           "SELECT MediaId,LastWritten FROM Media "
           "WHERE PoolId=%u AND Recycle=1 AND VolStatus='Purged' "
           "AND MediaType='%s' %s"
index a6bd8040f86adb64d0eb91656efe81d69a535d91..3933586d5405ca0776aec09c0e23c024ec6b84e8 100644 (file)
@@ -226,7 +226,8 @@ int do_restore(JCR *jcr)
 
    /* Send restore command */
    char replace, *where;
-
+   char empty = '\0';
+   
    if (jcr->replace != 0) {
       replace = jcr->replace;
    } else if (jcr->job->replace != 0) {
@@ -239,7 +240,7 @@ int do_restore(JCR *jcr)
    } else if (jcr->job->RestoreWhere) {
       where = jcr->job->RestoreWhere; /* no override take from job */
    } else {
-      where = "";                     /* None */
+      where = &empty;                 /* None */
    }
    jcr->prefix_links = jcr->job->PrefixLinks;
    bash_spaces(where);
@@ -267,7 +268,7 @@ static void restore_cleanup(JCR *jcr, int TermCode)
    char sdt[MAX_TIME_LENGTH], edt[MAX_TIME_LENGTH];
    char ec1[30], ec2[30], ec3[30];
    char term_code[100], fd_term_msg[100], sd_term_msg[100];
-   char *term_msg;
+   const char *term_msg;
    int msg_type;
    double kbps;
 
index 9986f75eafaa412fbae48e71edb57c213bcdee8a..0d31987a2310a199268a79a0dd754962c47ca09e 100644 (file)
@@ -48,11 +48,11 @@ enum e_state {
    s_monthly,
    s_hourly,
    s_wom,                          /* 1st, 2nd, ...*/
-   s_woy,                          /* week of year w00 - w53 */
+   s_woy                           /* week of year w00 - w53 */
 };  
 
 struct s_keyw {
-  char *name;                        /* keyword */
+  const char *name;                          /* keyword */
   enum e_state state;                /* parser state */
   int code;                          /* state value */
 };
index eed6f1d88438c524a5c73682fa16cfaf0804d17b..be4ac815724272b111c782ee8f5f49a9c4bb7297 100644 (file)
@@ -53,7 +53,7 @@ static int const NEXT_CHECK_SECS = 60;
 /* Forward referenced subroutines */
 static void find_runs();
 static void add_job(JOB *job, RUN *run, time_t now, time_t runtime);
-static void dump_job(job_item *ji, char *msg);
+static void dump_job(job_item *ji, const char *msg);
 
 /* Imported subroutines */
 
@@ -362,7 +362,7 @@ static void add_job(JOB *job, RUN *run, time_t now, time_t runtime)
 #endif
 }
 
-static void dump_job(job_item *ji, char *msg) 
+static void dump_job(job_item *ji, const char *msg) 
 {
 #ifdef SCHED_DEBUG
    char dt[MAX_TIME_LENGTH];
index b3d3aa74a2444aba84b03dbcda2917aed505b976..042d3764bde0dd85b3242e0132f19cfbe8690893 100644 (file)
 #include "dird.h"
 
 /* For ua_cmds.c */
-char *list_pool = "SELECT * FROM Pool WHERE PoolId=%u";
+const char *list_pool = "SELECT * FROM Pool WHERE PoolId=%u";
 
 /* ====== ua_prune.c */
 
-char *cnt_File     = "SELECT count(*) FROM File WHERE JobId=%u";
-char *del_File     = "DELETE FROM File WHERE JobId=%u";
-char *upd_Purged   = "UPDATE Job Set PurgedFiles=1 WHERE JobId=%u";
-char *cnt_DelCand  = "SELECT count(*) FROM DelCandidates";
-char *del_Job      = "DELETE FROM Job WHERE JobId=%u";
-char *del_JobMedia = "DELETE FROM JobMedia WHERE JobId=%u"; 
-char *cnt_JobMedia = "SELECT count(*) FROM JobMedia WHERE MediaId=%u";
-char *sel_JobMedia = "SELECT JobId FROM JobMedia WHERE MediaId=%u";
+const char *cnt_File     = "SELECT count(*) FROM File WHERE JobId=%u";
+const char *del_File     = "DELETE FROM File WHERE JobId=%u";
+const char *upd_Purged   = "UPDATE Job Set PurgedFiles=1 WHERE JobId=%u";
+const char *cnt_DelCand  = "SELECT count(*) FROM DelCandidates";
+const char *del_Job      = "DELETE FROM Job WHERE JobId=%u";
+const char *del_JobMedia = "DELETE FROM JobMedia WHERE JobId=%u"; 
+const char *cnt_JobMedia = "SELECT count(*) FROM JobMedia WHERE MediaId=%u";
+const char *sel_JobMedia = "SELECT JobId FROM JobMedia WHERE MediaId=%u";
 
 /* Select JobIds for File deletion. */
-char *select_job =
+const char *select_job =
    "SELECT JobId from Job "    
    "WHERE JobTDate<%s "
    "AND ClientId=%u "
    "AND PurgedFiles=0";
 
 /* Delete temp tables and indexes  */
-char *drop_deltabs[] = {
+const char *drop_deltabs[] = {
    "DROP TABLE DelCandidates",
    "DROP INDEX DelInx1",
    NULL};
 
 
 /* List of SQL commands to create temp table and indicies  */
-char *create_deltabs[] = {
+const char *create_deltabs[] = {
    "CREATE TABLE DelCandidates ("
 #ifdef HAVE_MYSQL
       "JobId INTEGER UNSIGNED NOT NULL, "
@@ -88,7 +88,7 @@ char *create_deltabs[] = {
 /* Fill candidates table with all Jobs subject to being deleted.
  *  This is used for pruning Jobs (first the files, then the Jobs).
  */
-char *insert_delcand = 
+const char *insert_delcand = 
    "INSERT INTO DelCandidates "
    "SELECT JobId,PurgedFiles,FileSetId,JobFiles,JobStatus FROM Job "
    "WHERE Type='%c' "
@@ -101,7 +101,7 @@ char *insert_delcand =
  * At the same time, we select "orphanned" jobs
  * (i.e. no files, ...) for deletion.
  */
-char *select_backup_del =
+const char *select_backup_del =
    "SELECT DelCandidates.JobId "
    "FROM Job,DelCandidates "
    "WHERE (JobTDate<%s AND ((DelCandidates.JobFiles=0) OR "
@@ -118,7 +118,7 @@ char *select_backup_del =
  * more recent InitCatalog -- i.e. are not the only InitCatalog
  * This is the list of Jobs to delete for a Verify Job.
  */
-char *select_verify_del =
+const char *select_verify_del =
    "SELECT DelCandidates.JobId "
    "FROM Job,DelCandidates "
    "WHERE Job.JobTDate>%s "
@@ -133,7 +133,7 @@ char *select_verify_del =
 /* Select Jobs from the DelCandidates table.
  * This is the list of Jobs to delete for a Restore Job.
  */
-char *select_restore_del =
+const char *select_restore_del =
    "SELECT DelCandidates.JobId "
    "FROM Job,DelCandidates "
    "WHERE Job.JobTDate>%s "
@@ -146,7 +146,7 @@ char *select_restore_del =
 /* ======= ua_restore.c */
 
 /* List last 20 Jobs */
-char *uar_list_jobs = 
+const char *uar_list_jobs = 
    "SELECT JobId,Client.Name as Client,StartTime,Level as "
    "JobLevel,JobFiles,JobBytes "
    "FROM Client,Job WHERE Client.ClientId=Job.ClientId AND JobStatus='T' "
@@ -155,7 +155,7 @@ char *uar_list_jobs =
 #ifdef HAVE_MYSQL
 /*  MYSQL IS NOT STANDARD SQL !!!!! */
 /* List Jobs where a particular file is saved */
-char *uar_file = 
+const char *uar_file = 
    "SELECT Job.JobId as JobId, Client.Name as Client, "
    "CONCAT(Path.Path,Filename.Name) as Name, "
    "StartTime,Type as JobType,JobFiles,JobBytes "
@@ -165,7 +165,7 @@ char *uar_file =
    "AND Filename.Name='%s' LIMIT 20";
 #else
 /* List Jobs where a particular file is saved */
-char *uar_file = 
+const char *uar_file = 
    "SELECT Job.JobId as JobId, Client.Name as Client, "
    "Path.Path||Filename.Name as Name, "
    "StartTime,Type as JobType,JobFiles,JobBytes "
@@ -180,16 +180,16 @@ char *uar_file =
  * Find all files for a particular JobId and insert them into
  *  the tree during a restore.
  */
-char *uar_sel_files = 
+const char *uar_sel_files = 
    "SELECT Path.Path,Filename.Name,FileIndex,JobId,LStat "
    "FROM File,Filename,Path "
    "WHERE File.JobId=%u AND Filename.FilenameId=File.FilenameId "
    "AND Path.PathId=File.PathId";
 
-char *uar_del_temp  = "DROP TABLE temp";
-char *uar_del_temp1 = "DROP TABLE temp1";
+const char *uar_del_temp  = "DROP TABLE temp";
+const char *uar_del_temp1 = "DROP TABLE temp1";
 
-char *uar_create_temp = 
+const char *uar_create_temp = 
    "CREATE TABLE temp ("
 #ifdef HAVE_POSTGRESQL
    "JobId INTEGER NOT NULL,"
@@ -215,7 +215,7 @@ char *uar_create_temp =
    "VolSessionTime INTEGER UNSIGNED)";
 #endif
 
-char *uar_create_temp1 = 
+const char *uar_create_temp1 = 
    "CREATE TABLE temp1 ("
 #ifdef HAVE_POSTGRESQL
    "JobId INTEGER NOT NULL,"
@@ -225,7 +225,7 @@ char *uar_create_temp1 =
    "JobTDate BIGINT UNSIGNED)";
 #endif
 
-char *uar_last_full =
+const char *uar_last_full =
    "INSERT INTO temp1 SELECT Job.JobId,JobTdate "
    "FROM Client,Job,JobMedia,Media,FileSet WHERE Client.ClientId=%u "
    "AND Job.ClientId=%u "
@@ -238,7 +238,7 @@ char *uar_last_full =
    "%s"
    "ORDER BY Job.JobTDate DESC LIMIT 1";
 
-char *uar_full = 
+const char *uar_full = 
    "INSERT INTO temp SELECT Job.JobId,Job.JobTDate,"          
    " Job.ClientId,Job.Level,Job.JobFiles,"
    " StartTime,VolumeName,JobMedia.StartFile,VolSessionId,VolSessionTime "
@@ -247,7 +247,7 @@ char *uar_full =
    "AND JobMedia.JobId=Job.JobId "
    "AND JobMedia.MediaId=Media.MediaId";
 
-char *uar_dif = 
+const char *uar_dif = 
    "INSERT INTO temp SELECT Job.JobId,Job.JobTDate,Job.ClientId,"
    "Job.Level,Job.JobFiles,Job.StartTime,Media.VolumeName,JobMedia.StartFile,"
    "Job.VolSessionId,Job.VolSessionTime "
@@ -262,7 +262,7 @@ char *uar_dif =
    "%s" 
    "ORDER BY Job.JobTDate DESC LIMIT 1";
 
-char *uar_inc =
+const char *uar_inc =
    "INSERT INTO temp SELECT Job.JobId,Job.JobTDate,Job.ClientId,"
    "Job.Level,Job.JobFiles,Job.StartTime,Media.VolumeName,JobMedia.StartFile,"
    "Job.VolSessionId,Job.VolSessionTime "
@@ -276,29 +276,29 @@ char *uar_inc =
    "AND FileSet.FileSet='%s' "
    "%s";
 
-char *uar_list_temp = 
+const char *uar_list_temp = 
    "SELECT JobId,Level,JobFiles,StartTime,VolumeName,StartFile,"
    "VolSessionId,VolSessionTime FROM temp "
    "ORDER BY StartTime ASC";
 
 
-char *uar_sel_jobid_temp = "SELECT JobId FROM temp";
+const char *uar_sel_jobid_temp = "SELECT JobId FROM temp";
 
-char *uar_sel_all_temp1 = "SELECT * FROM temp1";
+const char *uar_sel_all_temp1 = "SELECT * FROM temp1";
 
-char *uar_sel_all_temp = "SELECT * FROM temp";
+const char *uar_sel_all_temp = "SELECT * FROM temp";
 
 
 
 /* Select FileSet names for this Client */
-char *uar_sel_fileset = 
+const char *uar_sel_fileset = 
    "SELECT DISTINCT FileSet.FileSet FROM Job,"
    "Client,FileSet WHERE Job.FileSetId=FileSet.FileSetId "
    "AND Job.ClientId=%u AND Client.ClientId=%u "
    "ORDER BY FileSet.FileSet";
 
 /* Find MediaType used by this Job */
-char *uar_mediatype =
+const char *uar_mediatype =
    "SELECT MediaType FROM JobMedia,Media WHERE JobMedia.JobId=%u "
    "AND JobMedia.MediaId=Media.MediaId";
 
@@ -306,7 +306,7 @@ char *uar_mediatype =
  *  Find JobId, FileIndex for a given path/file and date   
  *  for use when inserting individual files into the tree.
  */
-char *uar_jobid_fileindex = 
+const char *uar_jobid_fileindex = 
    "SELECT Job.JobId, File.FileIndex FROM Job,File,Path,Filename,Client "
    "WHERE Job.JobId=File.JobId "
    "AND Job.StartTime<'%s' "
index 2baa3438e3d8a62facca795c3cee1639ab0c0315..73858a84909a7831e9f8f407e1bba44728a13dc9 100644 (file)
@@ -43,53 +43,55 @@ extern jobq_t job_queue;          /* job queue */
 extern char *list_pool;
 
 /* Imported functions */
-extern int status_cmd(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 autodisplay_cmd(UAContext *ua, char *cmd);
-extern int gui_cmd(UAContext *ua, char *cmd);
-extern int sqlquerycmd(UAContext *ua, char *cmd);
-extern int querycmd(UAContext *ua, char *cmd);
-extern int run_cmd(UAContext *ua, char *cmd);
-extern int retentioncmd(UAContext *ua, char *cmd);
-extern int prunecmd(UAContext *ua, char *cmd);
-extern int purgecmd(UAContext *ua, char *cmd);
-extern int restore_cmd(UAContext *ua, char *cmd);
-extern int label_cmd(UAContext *ua, char *cmd);
-extern int relabel_cmd(UAContext *ua, char *cmd);
+extern int status_cmd(UAContext *ua, const char *cmd);
+extern int list_cmd(UAContext *ua, const char *cmd);
+extern int llist_cmd(UAContext *ua, const char *cmd);
+extern int show_cmd(UAContext *ua, const char *cmd);
+extern int messagescmd(UAContext *ua, const char *cmd);
+extern int autodisplay_cmd(UAContext *ua, const char *cmd);
+extern int gui_cmd(UAContext *ua, const char *cmd);
+extern int sqlquerycmd(UAContext *ua, const char *cmd);
+extern int querycmd(UAContext *ua, const char *cmd);
+extern int run_cmd(UAContext *ua, const char *cmd);
+extern int retentioncmd(UAContext *ua, const char *cmd);
+extern int prunecmd(UAContext *ua, const char *cmd);
+extern int purgecmd(UAContext *ua, const char *cmd);
+extern int restore_cmd(UAContext *ua, const char *cmd);
+extern int label_cmd(UAContext *ua, const char *cmd);
+extern int relabel_cmd(UAContext *ua, const char *cmd);
 extern int update_slots(UAContext *ua);  /* ua_label.c */
 
 /* Forward referenced functions */
-static int add_cmd(UAContext *ua, char *cmd);  
-static int create_cmd(UAContext *ua, char *cmd); 
-static int cancel_cmd(UAContext *ua, char *cmd); 
-static int setdebug_cmd(UAContext *ua, char *cmd);
-static int trace_cmd(UAContext *ua, char *cmd);
-static int var_cmd(UAContext *ua, char *cmd);
-static int estimate_cmd(UAContext *ua, char *cmd);
-static int help_cmd(UAContext *ua, char *cmd);
-static int delete_cmd(UAContext *ua, char *cmd);
-static int use_cmd(UAContext *ua, char *cmd),  unmount_cmd(UAContext *ua, char *cmd);
-static int version_cmd(UAContext *ua, char *cmd), automount_cmd(UAContext *ua, char *cmd);
-static int time_cmd(UAContext *ua, char *cmd);
-static int reload_cmd(UAContext *ua, char *cmd);
+static int add_cmd(UAContext *ua, const char *cmd);  
+static int create_cmd(UAContext *ua, const char *cmd); 
+static int cancel_cmd(UAContext *ua, const char *cmd); 
+static int setdebug_cmd(UAContext *ua, const char *cmd);
+static int trace_cmd(UAContext *ua, const char *cmd);
+static int var_cmd(UAContext *ua, const char *cmd);
+static int estimate_cmd(UAContext *ua, const char *cmd);
+static int help_cmd(UAContext *ua, const char *cmd);
+static int delete_cmd(UAContext *ua, const char *cmd);
+static int use_cmd(UAContext *ua, const char *cmd);
+static int unmount_cmd(UAContext *ua, const char *cmd);
+static int version_cmd(UAContext *ua, const char *cmd);
+static int automount_cmd(UAContext *ua, const char *cmd);
+static int time_cmd(UAContext *ua, const char *cmd);
+static int reload_cmd(UAContext *ua, const char *cmd);
 static int update_volume(UAContext *ua);
 static int update_pool(UAContext *ua);
 static int delete_volume(UAContext *ua);
 static int delete_pool(UAContext *ua);
 static int delete_job(UAContext *ua);
-static int mount_cmd(UAContext *ua, char *cmd);
-static int release_cmd(UAContext *ua, char *cmd);
-static int update_cmd(UAContext *ua, char *cmd);
-static int wait_cmd(UAContext *ua, char *cmd);
-static int setip_cmd(UAContext *ua, char *cmd);
+static int mount_cmd(UAContext *ua, const char *cmd);
+static int release_cmd(UAContext *ua, const char *cmd);
+static int update_cmd(UAContext *ua, const char *cmd);
+static int wait_cmd(UAContext *ua, const char *cmd);
+static int setip_cmd(UAContext *ua, const char *cmd);
 
-int quit_cmd(UAContext *ua, char *cmd);
+int quit_cmd(UAContext *ua, const char *cmd);
 
 
-struct cmdstruct { char *key; int (*func)(UAContext *ua, char *cmd); char *help; }; 
+struct cmdstruct { const char *key; int (*func)(UAContext *ua, const char *cmd); const char *help; }; 
 static struct cmdstruct commands[] = {
  { N_("add"),        add_cmd,         _("add media to a pool")},
  { N_("autodisplay"), autodisplay_cmd, _("autodisplay [on/off] -- console messages")},
@@ -134,7 +136,7 @@ static struct cmdstruct commands[] = {
 /*
  * Execute a command from the UA
  */
-int do_a_command(UAContext *ua, char *cmd)
+int do_a_command(UAContext *ua, const char *cmd)
 {
    unsigned int i;
    int len, stat;
@@ -185,7 +187,7 @@ void set_pool_dbr_defaults_in_media_dbr(MEDIA_DBR *mr, POOL_DBR *pr)
 /*
  *  Add Volumes to an existing Pool
  */
-static int add_cmd(UAContext *ua, char *cmd) 
+static int add_cmd(UAContext *ua, const char *cmd) 
 {
    POOL_DBR pr;
    MEDIA_DBR mr;
@@ -334,7 +336,7 @@ getVolName:
  *  automount on 
  *  automount off
  */
-int automount_cmd(UAContext *ua, char *cmd)
+int automount_cmd(UAContext *ua, const char *cmd)
 {
    char *onoff;
 
@@ -355,7 +357,7 @@ int automount_cmd(UAContext *ua, char *cmd)
 /*
  * Cancel a job
  */
-static int cancel_cmd(UAContext *ua, char *cmd)
+static int cancel_cmd(UAContext *ua, const char *cmd)
 {
    int i, ret;
    int njobs = 0;
@@ -522,7 +524,7 @@ int create_pool(JCR *jcr, B_DB *db, POOL *pool, e_pool_op op)
  * Create a Pool Record in the database.
  *  It is always created from the Resource record.
  */
-static int create_cmd(UAContext *ua, char *cmd) 
+static int create_cmd(UAContext *ua, const char *cmd) 
 {
    POOL *pool;
 
@@ -558,7 +560,7 @@ static int create_cmd(UAContext *ua, char *cmd)
  *  if the Console name is the same as the Client name 
  *  and the Console can access the client.
  */
-static int setip_cmd(UAContext *ua, char *cmd) 
+static int setip_cmd(UAContext *ua, const char *cmd) 
 {
    CLIENT *client;
    if (!ua->cons || !acl_access_ok(ua, Client_ACL, ua->cons->hdr.name)) {
@@ -595,9 +597,9 @@ get_out:
  *    update slots [scan=...]
  *        updates autochanger slots
  */
-static int update_cmd(UAContext *ua, char *cmd) 
+static int update_cmd(UAContext *ua, const char *cmd) 
 {
-   static char *kw[] = {
+   static const char *kw[] = {
       N_("media"),  /* 0 */
       N_("volume"), /* 1 */
       N_("pool"),   /* 2 */
@@ -643,10 +645,10 @@ static int update_cmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static void update_volstatus(UAContext *ua, char *val, MEDIA_DBR *mr)
+static void update_volstatus(UAContext *ua, const char *val, MEDIA_DBR *mr)
 {
    POOLMEM *query = get_pool_memory(PM_MESSAGE);
-   char *kw[] = {
+   const char *kw[] = {
       "Append",
       "Archive",
       "Disabled",
@@ -853,7 +855,7 @@ static int update_volume(UAContext *ua)
    POOLMEM *query;
    char ed1[30];
    bool done = false;
-   char *kw[] = {
+   const char *kw[] = {
       N_("VolStatus"),                /* 0 */
       N_("VolRetention"),             /* 1 */
       N_("VolUse"),                   /* 2 */
@@ -1256,7 +1258,7 @@ static void do_all_setdebug(UAContext *ua, int level, int trace_flag)
 /*
  * setdebug level=nn all trace=1/0
  */
-static int setdebug_cmd(UAContext *ua, char *cmd)
+static int setdebug_cmd(UAContext *ua, const char *cmd)
 {
    STORE *store;
    CLIENT *client;
@@ -1375,7 +1377,7 @@ static int setdebug_cmd(UAContext *ua, char *cmd)
 /*
  * Turn debug tracing to file on/off
  */
-static int trace_cmd(UAContext *ua, char *cmd)
+static int trace_cmd(UAContext *ua, const char *cmd)
 {
    char *onoff;
 
@@ -1393,7 +1395,7 @@ static int trace_cmd(UAContext *ua, char *cmd)
 
 }
 
-static int var_cmd(UAContext *ua, char *cmd)
+static int var_cmd(UAContext *ua, const char *cmd)
 {
    POOLMEM *val = get_pool_memory(PM_FNAME);
    char *var;
@@ -1414,7 +1416,7 @@ static int var_cmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int estimate_cmd(UAContext *ua, char *cmd)
+static int estimate_cmd(UAContext *ua, const char *cmd)
 {
    JOB *job = NULL;
    CLIENT *client = NULL;
@@ -1510,7 +1512,7 @@ static int estimate_cmd(UAContext *ua, char *cmd)
 /*
  * print time
  */
-static int time_cmd(UAContext *ua, char *cmd)
+static int time_cmd(UAContext *ua, const char *cmd)
 {
    char sdt[50];
    time_t ttime = time(NULL);
@@ -1526,7 +1528,7 @@ static int time_cmd(UAContext *ua, char *cmd)
  */
 extern void reload_config(int sig);
 
-static int reload_cmd(UAContext *ua, char *cmd)
+static int reload_cmd(UAContext *ua, const char *cmd)
 {
    reload_config(1);   
    return 1;
@@ -1541,9 +1543,9 @@ static int reload_cmd(UAContext *ua, char *cmd)
  *  delete volume pool=<pool-name> volume=<name>
  *  delete job jobid=xxx
  */
-static int delete_cmd(UAContext *ua, char *cmd)
+static int delete_cmd(UAContext *ua, const char *cmd)
 {
-   static char *keywords[] = {
+   static const char *keywords[] = {
       N_("volume"),
       N_("pool"),
       N_("job"),
@@ -1663,7 +1665,7 @@ static int delete_pool(UAContext *ua)
 }
 
 
-static void do_mount_cmd(UAContext *ua, char *command)
+static void do_mount_cmd(UAContext *ua, const char *command)
 {
    STORE *store;
    BSOCK *sd;
@@ -1703,7 +1705,7 @@ static void do_mount_cmd(UAContext *ua, char *command)
 /*
  * mount [storage | device] <name>
  */
-static int mount_cmd(UAContext *ua, char *cmd)
+static int mount_cmd(UAContext *ua, const char *cmd)
 {
    do_mount_cmd(ua, "mount");          /* mount */
    return 1;
@@ -1713,7 +1715,7 @@ static int mount_cmd(UAContext *ua, char *cmd)
 /*
  * unmount [storage | device] <name>
  */
-static int unmount_cmd(UAContext *ua, char *cmd)
+static int unmount_cmd(UAContext *ua, const char *cmd)
 {
    do_mount_cmd(ua, "unmount");          /* unmount */
    return 1;
@@ -1723,7 +1725,7 @@ static int unmount_cmd(UAContext *ua, char *cmd)
 /*
  * release [storage | device] <name>
  */
-static int release_cmd(UAContext *ua, char *cmd)
+static int release_cmd(UAContext *ua, const char *cmd)
 {
    do_mount_cmd(ua, "release");          /* release */
    return 1;
@@ -1734,7 +1736,7 @@ static int release_cmd(UAContext *ua, char *cmd)
  * Switch databases
  *   use catalog=<name>
  */
-static int use_cmd(UAContext *ua, char *cmd)
+static int use_cmd(UAContext *ua, const char *cmd)
 {
    CAT *oldcatalog, *catalog;
 
@@ -1754,7 +1756,7 @@ static int use_cmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-int quit_cmd(UAContext *ua, char *cmd) 
+int quit_cmd(UAContext *ua, const char *cmd) 
 {
    ua->quit = TRUE;
    return 1;
@@ -1763,7 +1765,7 @@ int quit_cmd(UAContext *ua, char *cmd)
 /*
  * Wait until no job is running 
  */
-int wait_cmd(UAContext *ua, char *cmd) 
+int wait_cmd(UAContext *ua, const char *cmd) 
 {
    JCR *jcr;
    bmicrosleep(0, 200000);           /* let job actually start */
@@ -1787,7 +1789,7 @@ int wait_cmd(UAContext *ua, char *cmd)
 }
 
 
-static int help_cmd(UAContext *ua, char *cmd)
+static int help_cmd(UAContext *ua, const char *cmd)
 {
    unsigned int i;
 
@@ -1799,7 +1801,7 @@ static int help_cmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int version_cmd(UAContext *ua, char *cmd)
+static int version_cmd(UAContext *ua, const char *cmd)
 {
    bsendmsg(ua, "%s Version: " VERSION " (" BDATE ")\n", my_name);
    return 1;
index 15baf98f4cd09b320cf8d74a624f72f4d05708b1..c6cc6120ac28641d05c99521af291770eeb619d9 100644 (file)
@@ -41,22 +41,22 @@ extern struct s_res resources[];
 extern char my_name[];
 
 /* Imported functions */
-extern int qmessagescmd(UAContext *ua, char *cmd);
-extern int quit_cmd(UAContext *ua, char *cmd);
+extern int qmessagescmd(UAContext *ua, const char *cmd);
+extern int quit_cmd(UAContext *ua, const char *cmd);
 
 /* Forward referenced functions */
-static int diecmd(UAContext *ua, char *cmd);
-static int jobscmd(UAContext *ua, char *cmd);
-static int filesetscmd(UAContext *ua, char *cmd);
-static int clientscmd(UAContext *ua, char *cmd);
-static int msgscmd(UAContext *ua, char *cmd);
-static int poolscmd(UAContext *ua, char *cmd);
-static int storagecmd(UAContext *ua, char *cmd);
-static int defaultscmd(UAContext *ua, char *cmd);
-static int typescmd(UAContext *ua, char *cmd);
-static int levelscmd(UAContext *ua, char *cmd);
-
-struct cmdstruct { char *key; int (*func)(UAContext *ua, char *cmd); char *help; }; 
+static int diecmd(UAContext *ua, const char *cmd);
+static int jobscmd(UAContext *ua, const char *cmd);
+static int filesetscmd(UAContext *ua, const char *cmd);
+static int clientscmd(UAContext *ua, const char *cmd);
+static int msgscmd(UAContext *ua, const char *cmd);
+static int poolscmd(UAContext *ua, const char *cmd);
+static int storagecmd(UAContext *ua, const char *cmd);
+static int defaultscmd(UAContext *ua, const char *cmd);
+static int typescmd(UAContext *ua, const char *cmd);
+static int levelscmd(UAContext *ua, const char *cmd);
+
+struct cmdstruct { const char *key; int (*func)(UAContext *ua, const char *cmd); const char *help; }; 
 static struct cmdstruct commands[] = {
  { N_(".die"),        diecmd,       NULL},
  { N_(".jobs"),       jobscmd,      NULL},
@@ -77,7 +77,7 @@ static struct cmdstruct commands[] = {
 /*
  * Execute a command from the UA
  */
-int do_a_dot_command(UAContext *ua, char *cmd)
+int do_a_dot_command(UAContext *ua, const char *cmd)
 {
    int i;
    int len, stat;  
@@ -112,7 +112,7 @@ int do_a_dot_command(UAContext *ua, char *cmd)
 /*
  * Create segmentation fault 
  */
-static int diecmd(UAContext *ua, char *cmd)
+static int diecmd(UAContext *ua, const char *cmd)
 {
    JCR *jcr = NULL;
    int a;
@@ -123,7 +123,7 @@ static int diecmd(UAContext *ua, char *cmd)
    return 0;
 }
 
-static int jobscmd(UAContext *ua, char *cmd)
+static int jobscmd(UAContext *ua, const char *cmd)
 {
    JOB *job = NULL;
    LockRes();
@@ -134,7 +134,7 @@ static int jobscmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int filesetscmd(UAContext *ua, char *cmd)
+static int filesetscmd(UAContext *ua, const char *cmd)
 {
    FILESET *fs = NULL;
    LockRes();
@@ -145,7 +145,7 @@ static int filesetscmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int clientscmd(UAContext *ua, char *cmd)
+static int clientscmd(UAContext *ua, const char *cmd)
 {
    CLIENT *client = NULL;
    LockRes();
@@ -156,7 +156,7 @@ static int clientscmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int msgscmd(UAContext *ua, char *cmd)
+static int msgscmd(UAContext *ua, const char *cmd)
 {
    MSGS *msgs = NULL;
    LockRes();
@@ -167,7 +167,7 @@ static int msgscmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int poolscmd(UAContext *ua, char *cmd)
+static int poolscmd(UAContext *ua, const char *cmd)
 {
    POOL *pool = NULL;
    LockRes();
@@ -178,7 +178,7 @@ static int poolscmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int storagecmd(UAContext *ua, char *cmd)
+static int storagecmd(UAContext *ua, const char *cmd)
 {
    STORE *store = NULL;
    LockRes();
@@ -190,7 +190,7 @@ static int storagecmd(UAContext *ua, char *cmd)
 }
 
 
-static int typescmd(UAContext *ua, char *cmd)
+static int typescmd(UAContext *ua, const char *cmd)
 {
    bsendmsg(ua, "Backup\n");
    bsendmsg(ua, "Restore\n");
@@ -199,7 +199,7 @@ static int typescmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static int levelscmd(UAContext *ua, char *cmd)
+static int levelscmd(UAContext *ua, const char *cmd)
 {
    bsendmsg(ua, "Incremental\n");
    bsendmsg(ua, "Full\n");
@@ -215,7 +215,7 @@ static int levelscmd(UAContext *ua, char *cmd)
 /*
  * Return default values for a job
  */
-static int defaultscmd(UAContext *ua, char *cmd)
+static int defaultscmd(UAContext *ua, const char *cmd)
 {
    JOB *job;      
    if (ua->argc == 2 && strcmp(ua->argk[1], "job") == 0) {
index 73d0cabd76bb16b1f2550b27e1bb0a066cdebe59..dde38e8b40c099b75d1abcac9339bfd399fedc00 100644 (file)
@@ -36,7 +36,7 @@
 
 /* Exported functions */
 
-int get_cmd(UAContext *ua, char *prompt)
+int get_cmd(UAContext *ua, const char *prompt)
 {
    BSOCK *sock = ua->UA_sock;
    int stat;
@@ -74,7 +74,7 @@ int get_cmd(UAContext *ua, char *prompt)
  *  Returns:  0 if failure
  *           1 if success => value in ua->pint32_val
  */
-int get_pint(UAContext *ua, char *prompt)
+int get_pint(UAContext *ua, const char *prompt)
 {
    double dval;
    ua->pint32_val = 0;
@@ -103,7 +103,7 @@ int get_pint(UAContext *ua, char *prompt)
  *           1 if success => ua->pint32_val == 1 for yes
  *                           ua->pint32_val == 0 for no
  */
-int get_yesno(UAContext *ua, char *prompt)
+int get_yesno(UAContext *ua, const char *prompt)
 {
    int len;
 
index d6a7364478f2bcb9cc84c3720ef26d785b80ddee..972f5c6fa50e40202dcb5206211a957217b35c1e 100644 (file)
@@ -39,7 +39,7 @@ typedef struct s_vol_list {
 
 
 /* Forward referenced functions */
-static int do_label(UAContext *ua, char *cmd, int relabel);
+static int do_label(UAContext *ua, const char *cmd, int relabel);
 static void label_from_barcodes(UAContext *ua);
 static int send_label_request(UAContext *ua, MEDIA_DBR *mr, MEDIA_DBR *omr, 
               POOL_DBR *pr, int relabel, bool media_record_exits);
@@ -56,12 +56,12 @@ static char *get_volume_name_from_SD(UAContext *ua, int Slot);
  *  
  *   label storage=xxx volume=vvv
  */
-int label_cmd(UAContext *ua, char *cmd)
+int label_cmd(UAContext *ua, const char *cmd)
 {
    return do_label(ua, cmd, 0);       /* standard label */
 }
 
-int relabel_cmd(UAContext *ua, char *cmd)
+int relabel_cmd(UAContext *ua, const char *cmd)
 {
    return do_label(ua, cmd, 1);      /* relabel tape */
 }
@@ -71,7 +71,7 @@ static int const max_slots = 5000;
 static bool get_user_slot_list(UAContext *ua, char *slot_list, int num_slots)
 {
    int i;
-   char *msg;
+   const char *msg;
 
    for (int i=0; i<num_slots; i++) {
       slot_list[i] = 0;
@@ -272,7 +272,7 @@ bail_out:
 /*
  * Common routine for both label and relabel
  */
-static int do_label(UAContext *ua, char *cmd, int relabel)
+static int do_label(UAContext *ua, const char *cmd, int relabel)
 {
    STORE *store;
    BSOCK *sd;
@@ -283,7 +283,7 @@ static int do_label(UAContext *ua, char *cmd, int relabel)
    int ok = FALSE;
    int i;
    bool media_record_exists = false;
-   static char *barcode_keyword[] = {
+   static const char *barcode_keyword[] = {
       "barcode",
       "barcodes",
       NULL};
@@ -537,11 +537,11 @@ bail_out:
  * Check if the Volume name has legal characters
  * If ua is non-NULL send the message
  */
-bool is_volume_name_legal(UAContext *ua, char *name)
+bool is_volume_name_legal(UAContext *ua, const char *name)
 {
    int len;
-   char *p;
-   char *accept = ":.-_";
+   const char *p;
+   const char *accept = ":.-_";
 
    /* Restrict the characters permitted in the Volume name */
    for (p=name; *p; p++) {
index aa8bd70d02cdee6f1f2eea3f0e5c54f04dcf02e8..dc5f2081f6aaa74575cdbe69f8a7ee23e40c2ebf 100644 (file)
@@ -45,14 +45,14 @@ extern brwlock_t con_lock;
 /* Imported functions */
 
 /* Forward referenced functions */
-static int do_list_cmd(UAContext *ua, char *cmd, e_list_type llist);
+static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist);
 
 /*
  * Turn auto display of console messages on/off
  */
-int autodisplay_cmd(UAContext *ua, char *cmd)
+int autodisplay_cmd(UAContext *ua, const char *cmd)
 {
-   static char *kw[] = {
+   static const char *kw[] = {
       N_("on"), 
       N_("off"),
       NULL};
@@ -74,9 +74,9 @@ int autodisplay_cmd(UAContext *ua, char *cmd)
 /*
  * Turn gui processing on/off
  */
-int gui_cmd(UAContext *ua, char *cmd)
+int gui_cmd(UAContext *ua, const char *cmd)
 {
-   static char *kw[] = {
+   static const char *kw[] = {
       N_("on"), 
       N_("off"),
       NULL};
@@ -97,7 +97,7 @@ int gui_cmd(UAContext *ua, char *cmd)
 
 
 
-struct showstruct {char *res_name; int type;};
+struct showstruct {const char *res_name; int type;};
 static struct showstruct reses[] = {
    {N_("directors"),  R_DIRECTOR},
    {N_("clients"),    R_CLIENT},
@@ -123,7 +123,7 @@ static struct showstruct reses[] = {
  *  show <resource-keyword-name>=<name> e.g. show director=HeadMan
  *
  */
-int show_cmd(UAContext *ua, char *cmd)
+int show_cmd(UAContext *ua, const char *cmd)
 {
    int i, j, type, len; 
    int recurse;
@@ -221,18 +221,18 @@ bail_out:
  */
 
 /* Do long or full listing */
-int llist_cmd(UAContext *ua, char *cmd)
+int llist_cmd(UAContext *ua, const char *cmd)
 {
    return do_list_cmd(ua, cmd, VERT_LIST);
 }
 
 /* Do short or summary listing */
-int list_cmd(UAContext *ua, char *cmd)
+int list_cmd(UAContext *ua, const char *cmd)
 {
    return do_list_cmd(ua, cmd, HORZ_LIST);
 }
 
-static int do_list_cmd(UAContext *ua, char *cmd, e_list_type llist)
+static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
 {
    POOLMEM *VolumeName;
    int jobid, n;
@@ -618,7 +618,7 @@ static void con_lock_release(void *arg)
    Vw(con_lock);
 }
 
-void do_messages(UAContext *ua, char *cmd)
+void do_messages(UAContext *ua, const char *cmd)
 {
    char msg[2000];
    int mlen; 
@@ -645,7 +645,7 @@ void do_messages(UAContext *ua, char *cmd)
 }
 
 
-int qmessagescmd(UAContext *ua, char *cmd)
+int qmessagescmd(UAContext *ua, const char *cmd)
 {
    if (console_msg_pending && ua->auto_display_messages) {
       do_messages(ua, cmd);
@@ -653,7 +653,7 @@ int qmessagescmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-int messagescmd(UAContext *ua, char *cmd)
+int messagescmd(UAContext *ua, const char *cmd)
 {
    if (console_msg_pending) {
       do_messages(ua, cmd);
@@ -666,7 +666,7 @@ int messagescmd(UAContext *ua, char *cmd)
 /*
  * Callback routine for "printing" database file listing
  */
-void prtit(void *ctx, char *msg)
+void prtit(void *ctx, const char *msg)
 {
    UAContext *ua = (UAContext *)ctx;
  
@@ -680,7 +680,7 @@ void prtit(void *ctx, char *msg)
  * agent, so we are being called from Bacula core. In
  * that case direct the messages to the Job.
  */
-void bsendmsg(void *ctx, char *fmt, ...)
+void bsendmsg(void *ctx, const char *fmt, ...)
 {
    va_list arg_ptr;
    UAContext *ua = (UAContext *)ctx;
index 99cc852e2f00146d767bdcc5cc861b0846ede2c9..5e9f93652a879632424d4d2af43aad18ad8fa442 100644 (file)
@@ -155,14 +155,14 @@ static int file_delete_handler(void *ctx, int num_fields, char **row)
  *    prune jobs (from) client=xxx
  *    prune volume=xxx 
  */
-int prunecmd(UAContext *ua, char *cmd)
+int prunecmd(UAContext *ua, const char *cmd)
 {
    CLIENT *client;
    POOL_DBR pr;
    MEDIA_DBR mr;
    int kw;
 
-   static char *keywords[] = {
+   static const char *keywords[] = {
       N_("Files"),
       N_("Jobs"),
       N_("Volume"),
index 3cba6c85573973d814a06f6ab4511687beb2eed7..7ac5ac121f66c321ff0866a37889d5f7b403bd3d 100644 (file)
@@ -46,12 +46,12 @@ int mark_media_purged(UAContext *ua, MEDIA_DBR *mr);
 #define MAX_DEL_LIST_LEN 1000000
 
 
-static char *select_jobsfiles_from_client =
+static const char *select_jobsfiles_from_client =
    "SELECT JobId FROM Job "
    "WHERE ClientId=%d "
    "AND PurgedFiles=0";
 
-static char *select_jobs_from_client =
+static const char *select_jobs_from_client =
    "SELECT JobId, PurgedFiles FROM Job "
    "WHERE ClientId=%d";
 
@@ -161,26 +161,26 @@ static int file_delete_handler(void *ctx, int num_fields, char **row)
  *
  *  N.B. Not all above is implemented yet.
  */
-int purgecmd(UAContext *ua, char *cmd)
+int purgecmd(UAContext *ua, const char *cmd)
 {
    int i;
    CLIENT *client;
    MEDIA_DBR mr;
    JOB_DBR  jr;
-   static char *keywords[] = {
+   static const char *keywords[] = {
       N_("files"),
       N_("jobs"),
       N_("volume"),
       NULL};
 
-   static char *files_keywords[] = {
+   static const char *files_keywords[] = {
       N_("Job"),
       N_("JobId"),
       N_("Client"),
       N_("Volume"),
       NULL};
 
-   static char *jobs_keywords[] = {
+   static const char *jobs_keywords[] = {
       N_("Client"),
       N_("Volume"),
       NULL};
index 4e6465e64fe25477d5f97fcb63a16ca89784b1ef..faa8c0614b1b1f7a68bb3f5bf587dc1e0eb98ec0 100644 (file)
@@ -48,7 +48,7 @@ static POOLMEM *substitute_prompts(UAContext *ua,
  *   SQL statement possibly terminated by ;
  *   :next query prompt
  */
-int querycmd(UAContext *ua, char *cmd)
+int querycmd(UAContext *ua, const char *cmd)
 {
    FILE *fd = NULL;
    POOLMEM *query = get_pool_memory(PM_MESSAGE);
@@ -243,11 +243,11 @@ static POOLMEM *substitute_prompts(UAContext *ua,
 /*
  * Get general SQL query for Catalog
  */
-int sqlquerycmd(UAContext *ua, char *cmd)
+int sqlquerycmd(UAContext *ua, const char *cmd)
 {
    POOLMEM *query = get_pool_memory(PM_MESSAGE);
    int len;
-   char *msg;
+   const char *msg;
 
    if (!open_db(ua)) {
       free_pool_memory(query);
index e332c29f8c79fc91c571617228504e5ee984c464..f2046c3b46bef55cdfca9cb9fc2e2f2c8a97dcda 100644 (file)
@@ -38,7 +38,7 @@
 
 
 /* Imported functions */
-extern int run_cmd(UAContext *ua, char *cmd);
+extern int run_cmd(UAContext *ua, const char *cmd);
 extern void print_bsr(UAContext *ua, RBSR *bsr);
 
 /* Imported variables */
@@ -113,7 +113,7 @@ static int get_date(UAContext *ua, char *date, int date_len);
  *   Restore files
  *
  */
-int restore_cmd(UAContext *ua, char *cmd)
+int restore_cmd(UAContext *ua, const char *cmd)
 {
    RESTORE_CTX rx;                   /* restore context */
    JOB *job;
@@ -290,7 +290,7 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
    JOB_DBR jr;
    bool done = false;
    int i, j;
-   char *list[] = { 
+   const char *list[] = { 
       "List last 20 Jobs run",
       "List Jobs where a given File is saved",
       "Enter list of comma separated JobIds to select",
@@ -302,7 +302,7 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
       "Cancel",
       NULL };
 
-   char *kw[] = {
+   const char *kw[] = {
       "jobid",     /* 0 */
       "current",   /* 1 */
       "before",    /* 2 */
@@ -701,9 +701,11 @@ static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
    TREE_CTX tree;
    JobId_t JobId, last_JobId;
    char *p;
-   char *nofname = "";
+   char empty = '\0';
+   char *nofname;
    bool OK = true;
 
+   nofname = &empty;
    memset(&tree, 0, sizeof(TREE_CTX));
    /* 
     * Build the directory tree containing JobIds user selected
index 63446491fbe7819daf976d90e841671cee471ba0..856911680bfdee612c4f03f99d9ecc55b1d59d1b 100644 (file)
@@ -44,11 +44,12 @@ extern struct s_kw ReplaceOptions[];
  *     run <job-name> jobid=nn
  *
  */
-int run_cmd(UAContext *ua, char *cmd)
+int run_cmd(UAContext *ua, const char *cmd)
 {
    JCR *jcr;
    char *job_name, *level_name, *jid, *store_name, *pool_name;
-   char *where, *fileset_name, *client_name, *bootstrap, *replace;
+   char *where, *fileset_name, *client_name, *bootstrap;
+   const char *replace;
    char *when, *verify_job_name;
    int Priority = 0;
    int i, j, opt, files = 0;
@@ -59,7 +60,7 @@ int run_cmd(UAContext *ua, char *cmd)
    CLIENT *client = NULL;
    FILESET *fileset = NULL;
    POOL *pool = NULL;
-   static char *kw[] = {             /* command line arguments */
+   static const char *kw[] = {       /* command line arguments */
       N_("job"),                      /*  Used in a switch() */
       N_("jobid"),                    /* 1 */
       N_("client"),                   /* 2 */
@@ -481,7 +482,7 @@ Priority: %d\n"),
                 bstrutime(dt, sizeof(dt), jcr->sched_time),
                 jcr->JobPriority);
       } else { /* JT_VERIFY */
-        char *Name;
+        const char *Name;
         if (jcr->job->verify_job) {
            Name = jcr->job->verify_job->hdr.name;
         } else {
index 17ea007638e1564641022f59a031ddccfcc4e743..e2a93ce54dc14988e9930036a0fb23417df04671 100644 (file)
@@ -36,7 +36,7 @@
 /*
  * Confirm a retention period
  */
-int confirm_retention(UAContext *ua, utime_t *ret, char *msg)
+int confirm_retention(UAContext *ua, utime_t *ret, const char *msg)
 {
    char ed1[30];
 
@@ -72,7 +72,7 @@ int confirm_retention(UAContext *ua, utime_t *ret, char *msg)
  * Returns: -1 if not found
  *         index into list (base 0) on success
  */
-int find_arg_keyword(UAContext *ua, char **list)
+int find_arg_keyword(UAContext *ua, const char **list)
 {
    for (int i=1; i<ua->argc; i++) {
       for(int j=0; list[j]; j++) {
@@ -90,7 +90,7 @@ int find_arg_keyword(UAContext *ua, char **list)
  * Returns: argk index (always gt 0)
  *         -1 if not found
  */
-int find_arg(UAContext *ua, char *keyword)
+int find_arg(UAContext *ua, const char *keyword)
 {
    for (int i=1; i<ua->argc; i++) {
       if (strcasecmp(keyword, ua->argk[i]) == 0) {
@@ -106,7 +106,7 @@ int find_arg(UAContext *ua, char *keyword)
  * Returns: -1 if not found or no value
  *          list index (base 0) on success
  */
-int find_arg_with_value(UAContext *ua, char *keyword)
+int find_arg_with_value(UAContext *ua, const char *keyword)
 {
    for (int i=1; i<ua->argc; i++) {
       if (strcasecmp(keyword, ua->argk[i]) == 0) {
@@ -127,7 +127,7 @@ int find_arg_with_value(UAContext *ua, char *keyword)
  * Returns: -1 on failure
  *         index into list (base 0) on success
  */
-int do_keyword_prompt(UAContext *ua, char *msg, char **list)
+int do_keyword_prompt(UAContext *ua, const char *msg, const char **list)
 {
    int i;
    start_prompt(ua, _("You have the following choices:\n"));
@@ -643,7 +643,7 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr)
 /*
  * Implement unique set of prompts 
  */
-void start_prompt(UAContext *ua, char *msg)
+void start_prompt(UAContext *ua, const char *msg)
 {
   if (ua->max_prompts == 0) {
      ua->max_prompts = 10;
@@ -656,7 +656,7 @@ void start_prompt(UAContext *ua, char *msg)
 /*
  * Add to prompts -- keeping them unique 
  */
-void add_prompt(UAContext *ua, char *prompt)
+void add_prompt(UAContext *ua, const char *prompt)
 {
    int i;
    if (ua->num_prompts == ua->max_prompts) {
@@ -679,7 +679,7 @@ void add_prompt(UAContext *ua, char *prompt)
  *           index base 0 on success, and choice
  *              is copied to prompt if not NULL
  */
-int do_prompt(UAContext *ua, char *automsg, char *msg, char *prompt, int max_prompt)
+int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *prompt, int max_prompt)
 {
    int i, item;
    char pmsg[MAXSTRING];
index 85a57dc245c4805dd4b3b132323453023c3c58ed..4dd97dbab0002dc5dd768556530426fc8ac37287 100644 (file)
@@ -95,7 +95,7 @@ static void *connect_thread(void *arg)
  * Create a Job Control Record for a control "job",
  *   filling in all the appropriate fields.
  */
-JCR *new_control_jcr(char *base_name, int job_type)
+JCR *new_control_jcr(const char *base_name, int job_type)
 {
    JCR *jcr;
    jcr = new_jcr(sizeof(JCR), dird_free_jcr);
index f7127d64a1948882f8ee76b3c8616f68ff22c94a..77461a8cdf68dba939b40884349980f2e3283aa7 100644 (file)
@@ -39,13 +39,13 @@ static void list_running_jobs(UAContext *ua);
 static void list_terminated_jobs(UAContext *ua);
 static void do_storage_status(UAContext *ua, STORE *store);
 static void do_client_status(UAContext *ua, CLIENT *client);
-static void do_director_status(UAContext *ua, char *cmd);
-static void do_all_status(UAContext *ua, char *cmd);
+static void do_director_status(UAContext *ua);
+static void do_all_status(UAContext *ua);
 
 /*
  * status command
  */
-int status_cmd(UAContext *ua, char *cmd)
+int status_cmd(UAContext *ua, const char *cmd)
 {
    STORE *store;
    CLIENT *client;
@@ -58,11 +58,11 @@ int status_cmd(UAContext *ua, char *cmd)
 
    for (i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], _("all")) == 0) {
-        do_all_status(ua, cmd);
+        do_all_status(ua);
         return 1;
       } else if (strcasecmp(ua->argk[i], _("dir")) == 0 ||
                  strcasecmp(ua->argk[i], _("director")) == 0) {
-        do_director_status(ua, cmd);
+        do_director_status(ua);
         return 1;
       } else if (strcasecmp(ua->argk[i], _("client")) == 0) {
         client = get_client_resource(ua);
@@ -80,19 +80,21 @@ int status_cmd(UAContext *ua, char *cmd)
    }
    /* If no args, ask for status type */
    if (ua->argc == 1) {                                   
+       char prmt[MAX_NAME_LENGTH];             
+       
       start_prompt(ua, _("Status available for:\n"));
       add_prompt(ua, _("Director"));
       add_prompt(ua, _("Storage"));
       add_prompt(ua, _("Client"));
       add_prompt(ua, _("All"));
       Dmsg0(20, "do_prompt: select daemon\n");
-      if ((item=do_prompt(ua, "",  _("Select daemon type for status"), cmd, MAX_NAME_LENGTH)) < 0) {
+      if ((item=do_prompt(ua, "",  _("Select daemon type for status"), prmt, sizeof(prmt))) < 0) {
         return 1;
       }
       Dmsg1(20, "item=%d\n", item);
       switch (item) { 
       case 0:                        /* Director */
-        do_director_status(ua, cmd);
+        do_director_status(ua);
         break;
       case 1:
         store = select_storage_resource(ua);
@@ -107,7 +109,7 @@ int status_cmd(UAContext *ua, char *cmd)
         }
         break;
       case 3:
-        do_all_status(ua, cmd);
+        do_all_status(ua);
         break;
       default:
         break;
@@ -116,14 +118,14 @@ int status_cmd(UAContext *ua, char *cmd)
    return 1;
 }
 
-static void do_all_status(UAContext *ua, char *cmd)
+static void do_all_status(UAContext *ua)
 {
    STORE *store, **unique_store;
    CLIENT *client, **unique_client;
    int i, j;
    bool found;
 
-   do_director_status(ua, cmd);
+   do_director_status(ua);
 
    /* Count Storage items */
    LockRes();
@@ -195,7 +197,7 @@ static void do_all_status(UAContext *ua, char *cmd)
    
 }
 
-static void do_director_status(UAContext *ua, char *cmd)
+static void do_director_status(UAContext *ua)
 {
    char dt[MAX_TIME_LENGTH];
 
@@ -299,7 +301,7 @@ static void prt_runhdr(UAContext *ua)
 static void prt_runtime(UAContext *ua, JOB *job, int level, time_t runtime, POOL *pool)
 {
    char dt[MAX_TIME_LENGTH];      
-   char *level_ptr;
+   const char *level_ptr;
    bool ok = false;
    bool close_db = false;
    JCR *jcr = ua->jcr;
@@ -383,7 +385,8 @@ static void list_running_jobs(UAContext *ua)
 {
    JCR *jcr;
    int njobs = 0;
-   char *msg;
+   const char *msg;
+   char *emsg;                       /* edited message */
    char dt[MAX_TIME_LENGTH];
    char level[10];
    bool pool_mem = false;
@@ -450,14 +453,16 @@ static void list_running_jobs(UAContext *ua)
          msg = _("has been canceled");
         break;
       case JS_WaitFD:
-        msg = (char *) get_pool_memory(PM_FNAME);
-         Mmsg(&msg, _("is waiting on Client %s"), jcr->client->hdr.name);
+        emsg = (char *) get_pool_memory(PM_FNAME);
+         Mmsg(&emsg, _("is waiting on Client %s"), jcr->client->hdr.name);
         pool_mem = true;
+        msg = emsg;
         break;
       case JS_WaitSD:
-        msg = (char *) get_pool_memory(PM_FNAME);
-         Mmsg(&msg, _("is waiting on Storage %s"), jcr->store->hdr.name);
+        emsg = (char *) get_pool_memory(PM_FNAME);
+         Mmsg(&emsg, _("is waiting on Storage %s"), jcr->store->hdr.name);
         pool_mem = true;
+        msg = emsg;
         break;
       case JS_WaitStoreRes:
          msg = _("is waiting on max Storage jobs");
@@ -479,9 +484,10 @@ static void list_running_jobs(UAContext *ua)
         break;
 
       default:
-        msg = (char *) get_pool_memory(PM_FNAME);
-         Mmsg(&msg, _("is in unknown state %c"), jcr->JobStatus);
+        emsg = (char *) get_pool_memory(PM_FNAME);
+         Mmsg(&emsg, _("is in unknown state %c"), jcr->JobStatus);
         pool_mem = true;
+        msg = emsg;
         break;
       }
       /* 
@@ -490,25 +496,26 @@ static void list_running_jobs(UAContext *ua)
       switch (jcr->SDJobStatus) {
       case JS_WaitMount:
         if (pool_mem) {
-           free_pool_memory(msg);
+           free_pool_memory(emsg);
            pool_mem = false;
         }
          msg = _("is waiting for a mount request");
         break;
       case JS_WaitMedia:
         if (pool_mem) {
-           free_pool_memory(msg);
+           free_pool_memory(emsg);
            pool_mem = false;
         }
          msg = _("is waiting for an appendable Volume");
         break;
       case JS_WaitFD:
         if (!pool_mem) {
-           msg = (char *) get_pool_memory(PM_FNAME);
+           emsg = (char *) get_pool_memory(PM_FNAME);
            pool_mem = true;
         }
-         Mmsg(&msg, _("is waiting for Client %s to connect to Storage %s"),
+         Mmsg(&emsg, _("is waiting for Client %s to connect to Storage %s"),
              jcr->client->hdr.name, jcr->store->hdr.name);
+        msg = emsg;
         break;
       }
       switch (jcr->JobType) {
@@ -529,7 +536,7 @@ static void list_running_jobs(UAContext *ua)
         msg);
 
       if (pool_mem) {
-        free_pool_memory(msg);
+        free_pool_memory(emsg);
         pool_mem = false;
       }
       free_locked_jcr(jcr);
@@ -555,7 +562,7 @@ static void list_terminated_jobs(UAContext *ua)
    bsendmsg(ua, _("========================================================================\n"));
    foreach_dlist(je, last_jobs) {
       char JobName[MAX_NAME_LENGTH];
-      char *termstat;
+      const char *termstat;
 
       bstrftime_nc(dt, sizeof(dt), je->end_time);
       switch (je->JobType) {
index d383ff3bffef32a7af9372df4d9a299caa682b99..f731994db6f9afe564d1ecb97e1b32e60d1053d2 100644 (file)
@@ -54,7 +54,7 @@ static int quitcmd(UAContext *ua, TREE_CTX *tree);
 static int donecmd(UAContext *ua, TREE_CTX *tree);
 
 
-struct cmdstruct { char *key; int (*func)(UAContext *ua, TREE_CTX *tree); char *help; }; 
+struct cmdstruct { const char *key; int (*func)(UAContext *ua, TREE_CTX *tree); const char *help; }; 
 static struct cmdstruct commands[] = {
  { N_("cd"),         cdcmd,        _("change current directory")},
  { N_("count"),      countcmd,     _("count marked files in and below the cd")},
@@ -377,7 +377,7 @@ static int findcmd(UAContext *ua, TREE_CTX *tree)
    for (int i=1; i < ua->argc; i++) {
       for (TREE_NODE *node=first_tree_node(tree->root); node; node=next_tree_node(node)) {
         if (fnmatch(ua->argk[i], node->fname, 0) == 0) {
-           char *tag;
+           const char *tag;
            tree_getpath(node, cwd, sizeof(cwd));
            if (node->extract) {
                tag = "*";
@@ -404,7 +404,7 @@ static int lscmd(UAContext *ua, TREE_CTX *tree)
    }
    for (node = tree->node->child; node; node=node->sibling) {
       if (ua->argc == 1 || fnmatch(ua->argk[1], node->fname, 0) == 0) {
-        char *tag;
+        const char *tag;
         if (node->extract) {
             tag = "*";
         } else if (node->extract_dir) {
@@ -429,7 +429,7 @@ static void rlsmark(UAContext *ua, TREE_NODE *node)
    for (node = node->child; node; node=node->sibling) {
       if ((ua->argc == 1 || fnmatch(ua->argk[1], node->fname, 0) == 0) &&
          (node->extract || node->extract_dir)) {
-        char *tag;
+        const char *tag;
         if (node->extract) {
             tag = "*";
         } else if (node->extract_dir) {
@@ -459,9 +459,10 @@ extern char *getgroup(gid_t gid);
 /*
  * This is actually the long form used for "dir"
  */
-static void ls_output(char *buf, char *fname, char *tag, struct stat *statp)
+static void ls_output(char *buf, const char *fname, const char *tag, struct stat *statp)
 {
-   char *p, *f;
+   char *p;
+   const char *f;
    char ec1[30];
    int n;
 
@@ -497,7 +498,7 @@ static int dircmd(UAContext *ua, TREE_CTX *tree)
       return 1;
    }
    for (node = tree->node->child; node; node=node->sibling) {
-      char *tag;
+      const char *tag;
       if (ua->argc == 1 || fnmatch(ua->argk[1], node->fname, 0) == 0) {
         if (node->extract) {
             tag = "*";
index 05834e602015b76e2087f9d4abff8c7a9ca9ba21..cc72716005de861311c9e78b864f801617c83592 100644 (file)
@@ -64,7 +64,7 @@ static int missing_handler(void *ctx, int num_fields, char **row);
  */
 int do_verify(JCR *jcr) 
 {
-   char *level, *Name;
+   const char *level, *Name;
    BSOCK   *fd;
    JOB_DBR jr, verify_jr;
    JobId_t verify_jobid = 0;
@@ -364,10 +364,10 @@ static void verify_cleanup(JCR *jcr, int TermCode)
    char sdt[50], edt[50];
    char ec1[30];
    char term_code[100], fd_term_msg[100], sd_term_msg[100];
-   char *term_msg;
+   const char *term_msg;
    int msg_type;
    JobId_t JobId;
-   char *Name;
+   const char *Name;
 
 // Dmsg1(100, "Enter verify_cleanup() TermCod=%d\n", TermCode);
 
index bade134359fccad47e3d6233b37293ff77b7af2c..dbbe9a0fcc8226bd09839ac0faef0d497dd5a921 100644 (file)
@@ -120,7 +120,7 @@ RES_TABLE resources[] = {
 
 
 /* Dump contents of resource */
-void dump_resource(int type, RES *reshdr, void sendit(void *sock, char *fmt, ...), void *sock)
+void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
 {
    URES *res = (URES *)reshdr;
    int recurse = 1;
index 2343366a0ce392f0a80d3a9f367d776682fa9fe6..4706531d60db3530ca40b7268a1f04c8e92b6428 100644 (file)
@@ -64,7 +64,7 @@ static void set_options(findFOPTS *fo, const char *opts);
 /* Exported functions */
 
 struct s_cmds {
-   char *cmd;
+   const char *cmd;
    int (*func)(JCR *);
 };
 
@@ -1523,7 +1523,7 @@ static int send_bootstrap_file(JCR *jcr)
    FILE *bs;
    char buf[2000];
    BSOCK *sd = jcr->store_bsock;
-   char *bootstrap = "bootstrap\n";
+   const char *bootstrap = "bootstrap\n";
    int stat = 0;
 
    Dmsg1(400, "send_bootstrap_file: %s\n", jcr->RestoreBootstrap);
index 40d6c17711e9e3449f3c12d37c689b2a828fa429..395acddb038d355a7d1a68787b1bca9dd6a76243 100755 (executable)
@@ -36,7 +36,7 @@ extern time_t daemon_start_time;
 /* Forward referenced functions */
 static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sarg), void *arg);
 static void bsock_sendit(const char *msg, int len, void *arg);
-static char *level_to_str(int level);
+static const char *level_to_str(int level);
 
 
 #if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
@@ -170,7 +170,7 @@ static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sa
    sendit(msg, strlen(msg), arg);
    foreach_dlist(je, last_jobs) {
       char JobName[MAX_NAME_LENGTH];
-      char *termstat;
+      const char *termstat;
       char buf[1000];
 
       bstrftime_nc(dt, sizeof(dt), je->end_time);
@@ -258,9 +258,9 @@ int status_cmd(JCR *jcr)
 /*
  * Convert Job Level into a string
  */
-static char *level_to_str(int level) 
+static const char *level_to_str(int level) 
 {
-   char *str;
+   const char *str;
 
    switch (level) {
    case L_BASE:
@@ -349,7 +349,7 @@ void FillStatusBox(HWND hwnd, int idlist)
 char *bac_status(int stat)
 {
    JCR *njcr;
-   char *termstat = _("Bacula Idle");
+   const char *termstat = _("Bacula Idle");
    struct s_last_job *job;
 
    bacstat = 0;
index 61b926b1fa00cf6dcae98ac246d2cb8c8e2c027b..377ce45393990113f744819bb9bb5cc47b8b2bc8 100644 (file)
@@ -80,11 +80,12 @@ void term_include_exclude_files(FF_PKT *ff)
 /*
  * Add a filename to list of included files
  */
-void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
+void add_fname_to_include_list(FF_PKT *ff, int prefixed, const char *fname)
 {
    int len, j;
    struct s_included_file *inc;
    char *p;
+   const char *rp;
 
    len = strlen(fname);
 
@@ -96,8 +97,8 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
 
    /* prefixed = preceded with options */
    if (prefixed) {
-      for (p=fname; *p && *p != ' '; p++) {
-        switch (*p) {
+      for (rp=fname; *rp && *rp != ' '; rp++) {
+        switch (*rp) {
          case 'a':                 /* alway replace */
          case '0':                 /* no option */
            break;
@@ -133,8 +134,8 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
            break;
          case 'V':                  /* verify options */
            /* Copy Verify Options */
-            for (j=0; *p && *p != ':'; p++) {
-              inc->VerifyOpts[j] = *p;
+            for (j=0; *rp && *rp != ':'; rp++) {
+              inc->VerifyOpts[j] = *rp;
               if (j < (int)sizeof(inc->VerifyOpts) - 1) {
                  j++;
               }
@@ -149,22 +150,22 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
            break;
         case 'Z':                 /* gzip compression */
            inc->options |= FO_GZIP;
-            inc->level = *++p - '0';
+            inc->level = *++rp - '0';
             Dmsg1(200, "Compression level=%d\n", inc->level);
            break;
         default:
-            Emsg1(M_ERROR, 0, "Unknown include/exclude option: %c\n", *p);
+            Emsg1(M_ERROR, 0, "Unknown include/exclude option: %c\n", *rp);
            break;
         }
       }
       /* Skip past space(s) */
-      for ( ; *p == ' '; p++)
+      for ( ; *rp == ' '; rp++)
         {}
    } else {
-      p = fname;
+      rp = fname;
    }
 
-   strcpy(inc->fname, p);                
+   strcpy(inc->fname, rp);               
    p = inc->fname;
    len = strlen(p);
    /* Zap trailing slashes.  */
@@ -209,7 +210,7 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
  * We add an exclude name to either the exclude path
  *  list or the exclude filename list.
  */
-void add_fname_to_exclude_list(FF_PKT *ff, char *fname)
+void add_fname_to_exclude_list(FF_PKT *ff, const char *fname)
 {
    int len;
    struct s_excluded_file *exc, **list;
@@ -267,7 +268,7 @@ struct s_included_file *get_next_included_file(FF_PKT *ff, struct s_included_fil
  *  file is included possibly with wild-cards.
  */
 
-int file_is_included(FF_PKT *ff, char *file)
+int file_is_included(FF_PKT *ff, const char *file)
 {
    struct s_included_file *inc = ff->included_files_list;
    int len;
@@ -305,7 +306,7 @@ int file_is_included(FF_PKT *ff, char *file)
  * Determine if the file is excluded or not.
  */
 static int
-file_in_excluded_list(struct s_excluded_file *exc, char *file)
+file_in_excluded_list(struct s_excluded_file *exc, const char *file)
 {
    if (exc == NULL) {
       Dmsg0(900, "exc is NULL\n");
@@ -327,9 +328,9 @@ file_in_excluded_list(struct s_excluded_file *exc, char *file)
  *  of an excluded directory.
  */
 
-int file_is_excluded(FF_PKT *ff, char *file)
+int file_is_excluded(FF_PKT *ff, const char *file)
 {
-   char *p;
+   const char *p;
 
    if (win32_client && file[1] == ':') {
       file += 2;
index 5f87bf4b0f27819fecdf94db3b2e26399fbd19b5..135c304d4624b1747d4a378dec168d77a92d7e0b 100644 (file)
@@ -42,10 +42,10 @@ int   term_find_files(FF_PKT *ff);
 /* From match.c */
 void  init_include_exclude_files(FF_PKT *ff);
 void  term_include_exclude_files(FF_PKT *ff);
-void  add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname);
-void  add_fname_to_exclude_list(FF_PKT *ff, char *fname);
-int   file_is_excluded(FF_PKT *ff, char *file);
-int   file_is_included(FF_PKT *ff, char *file);
+void  add_fname_to_include_list(FF_PKT *ff, int prefixed, const char *fname);
+void  add_fname_to_exclude_list(FF_PKT *ff, const char *fname);
+int   file_is_excluded(FF_PKT *ff, const char *file);
+int   file_is_included(FF_PKT *ff, const char *file);
 struct s_included_file *get_next_included_file(FF_PKT *ff, 
                            struct s_included_file *inc);
 
index a1816eff7c8bb8834806d3e5ad7337d66dd99272..3f64090f3c9cb6babe00963350cbe0f139083eca 100644 (file)
@@ -800,7 +800,7 @@ int bnet_sig(BSOCK *bs, int sig)
  * Convert a network "signal" code into
  * human readable ASCII.
  */
-char *bnet_sig_to_ascii(BSOCK *bs)
+const char *bnet_sig_to_ascii(BSOCK *bs)
 {
    static char buf[30];
    switch (bs->msglen) {
@@ -831,7 +831,7 @@ char *bnet_sig_to_ascii(BSOCK *bs)
  *  This probably should be done in net_open
  */
 BSOCK *
-init_bsock(JCR *jcr, int sockfd, const char *who, char *host, int port, 
+init_bsock(JCR *jcr, int sockfd, const char *who, const char *host, int port, 
           struct sockaddr_in *client_addr) 
 {
    BSOCK *bsock = (BSOCK *)malloc(sizeof(BSOCK));
index 18b0c3164fe9089bfb9625528713599400277fb0..74903b83fceef3736501a4dac9add1f65b7d4440 100644 (file)
@@ -67,7 +67,7 @@ bnet_thread_server(char *bind_addr, int port, int max_clients, workq_t *client_w
    struct in_addr bind_ip;           /* address to bind to */
    int tlog;
    int turnon = 1;
-   char *caller;
+   const char *caller;
 #ifdef HAVE_LIBWRAP
    struct request_info request;
 #endif
index 1be399bba09c2598cd54e0a6b32c5db60e9595a8..451d0f6d2048f8a0e777f80ce412d52879266a28 100644 (file)
@@ -124,7 +124,7 @@ int cram_md5_get_auth(BSOCK *bs, char *password, int ssl_need)
    if (strcmp(mp_chr(bs->msg), "1000 OK auth\n") == 0) {
       return 1;
    }
-   Dmsg1(100, "PW: %s\n", password);
+   Dmsg1(100, "Bad response: %s\n", bs->msg);
    bmicrosleep(5, 0);
    return 0;
 }
index b82c8bd0dd3012f2773fff8226aa770056e26337..15e2f6f3c59135cb1f1de2e4df40f503636d4efc 100644 (file)
@@ -102,6 +102,100 @@ void dlist::insert_after(void *item, void *where)
    num_items++;
 }
 
+/*
+ * Returns: item        if item inserted
+ *         other_item   if same value already exists (item not inserted)
+ */
+void *dlist::binary_insert(void *item, int compare(void *item1, void *item2))
+{
+   int comp;
+   int low, high, cur;
+   void *cur_item;
+
+   if (num_items == 0) {
+    //Dmsg0(000, "Append first.\n");
+      append(item);
+      return item;
+   }
+   if (num_items == 1) {
+      comp = compare(item, first());     
+      if (comp < 0) {
+        insert_before(item, first());
+       //Dmsg0(000, "Insert before first.\n");
+        return item;
+      } else if (comp > 0) {
+        insert_after(item, first());
+       //Dmsg0(000, "Insert after first.\n");
+        return item;
+      } else {
+       //Dmsg0(000, "Same as first.\n");
+        return first();
+      }
+   }
+   /* Check against last item */
+   comp = compare(item, last());
+   if (comp > 0) {
+      append(item);
+    //Dmsg0(000, "Appended item.\n");
+      return item;
+   } else if (comp == 0) {
+    //Dmsg0(000, "Same as last.\n");
+      return last();
+   }
+   /* Check against first item */
+   comp = compare(item, first());
+   if (comp < 0) {
+      insert_before(item, first());
+    //Dmsg0(000, "Inserted item before.\n");
+      return item;
+   } else if (comp == 0) {
+    //Dmsg0(000, "Same as first.\n");
+      return first();
+   }
+   if (num_items == 2) {
+      insert_after(item, first());
+    //Dmsg0(000, "Inserted item after.\n");
+      return item;
+   }
+   low = 1;
+   high = num_items;
+   cur = 1;
+   cur_item = first();
+   while (low < high) {
+      int nxt;
+      nxt = (low + high) / 2;
+      while (nxt > cur) {
+        cur_item = next(cur_item);
+        cur++;
+      }
+      while (nxt < cur) {
+        cur_item = prev(cur_item); 
+        cur--;
+      }
+    //Dmsg1(000, "Compare item to %d\n", cur);
+      comp = compare(item, cur_item);
+    //Dmsg2(000, "Compare item to %d = %d\n", cur, comp);
+      if (comp < 0) {
+        high = cur;
+       //Dmsg2(000, "set high; low=%d high=%d\n", low, high);
+      } else if (comp > 0) {
+        low = cur + 1;
+       //Dmsg2(000, "set low; low=%d high=%d\n", low, high);
+      } else {
+       //Dmsg1(000, "Same as item %d\n", cur);
+        return cur_item;
+      }
+   }
+   if (high == cur) {
+      insert_before(item, cur_item);
+    //Dmsg1(000, "Insert before item %d\n", cur);
+   } else {
+      insert_after(item, cur_item);
+    //Dmsg1(000, "Insert after item %d\n", cur);
+   }
+   return item;
+}
+
 
 void dlist::remove(void *item)
 {
@@ -170,11 +264,23 @@ struct MYJCR {
    dlink link;
 };
 
+static int my_compare(void *item1, void *item2)
+{
+   MYJCR *jcr1, *jcr2;
+   int comp;
+   jcr1 = (MYJCR *)item1;
+   jcr2 = (MYJCR *)item2;
+   comp = strcmp(jcr1->buf, jcr2->buf);
+ //Dmsg3(000, "compare=%d: %s to %s\n", comp, jcr1->buf, jcr2->buf);
+   return comp;
+}
+
 int main()
 {
    char buf[30];
    dlist *jcr_chain;
    MYJCR *jcr = NULL;
+   MYJCR *jcr1;
    MYJCR *save_jcr = NULL;
    MYJCR *next_jcr;
 
@@ -238,6 +344,44 @@ int main()
 
    delete jcr_chain;
 
+
+   /* Now do a binary insert for the list */
+   jcr_chain = new dlist(jcr, &jcr->link);
+#define CNT 26
+   printf("append %d items\n", CNT*CNT*CNT);
+   strcpy(buf, "ZZZ");
+   int count = 0;
+   for (int i=0; i<CNT; i++) {
+      for (int j=0; j<CNT; j++) {
+        for (int k=0; k<CNT; k++) {
+           count++;
+           if ((count & 0x3FF) == 0) {
+               Dmsg1(000, "At %d\n", count);
+           }
+           jcr = (MYJCR *)malloc(sizeof(MYJCR));
+           jcr->buf = bstrdup(buf);
+           jcr1 = (MYJCR *)jcr_chain->binary_insert(jcr, my_compare);
+           if (jcr != jcr1) {
+               Dmsg2(000, "Insert of %s vs %s failed.\n", jcr->buf, jcr1->buf);
+           }
+           buf[1]--;
+        }
+         buf[1] = 'Z';
+        buf[2]--;
+      }
+      buf[2] = 'Z';
+      buf[0]--;
+   }
+
+   printf("Print sorted list.\n");
+   foreach_dlist (jcr, jcr_chain) {
+      printf("Dlist item = %s\n", jcr->buf);
+      free(jcr->buf);
+   }
+
+   delete jcr_chain;
+
+
    sm_dump(false);
 
 }
index cef7d3016cb539089ab9f8df94082070202e52a5..d6bd8e6590f88d0198c878ea075174f0433032a2 100644 (file)
@@ -42,7 +42,7 @@
 
 #ifdef the_old_way
 #define foreach_dlist(var, list) \
-        for((var)=NULL; (((void *)(var))=(list)->next(var)); )
+       for((var)=NULL; (((void *)(var))=(list)->next(var)); )
 #endif
 
 struct dlink {
@@ -63,9 +63,10 @@ public:
    void append(void *item);
    void insert_before(void *item, void *where);
    void insert_after(void *item, void *where);
+   void *dlist::binary_insert(void *item, int compare(void *item1, void *item2));
    void remove(void *item);
    bool empty();
-   int  size();
+   int size();
    void *next(void *item);
    void *prev(void *item);
    void destroy();
@@ -75,7 +76,7 @@ public:
    void operator delete(void *);
 };
 
-/*                            
+/*                           
  * This allows us to do explicit initialization,
  *   allowing us to mix C++ classes inside malloc'ed
  *   C structures. Define before called in constructor.
index 63e3786af8c5c8d2a79b09cd7f72b99de4242471..b10b8a65cc3cece336280c526d150165669fa468 100644 (file)
@@ -376,9 +376,9 @@ void close_memory_pool()
 
 #ifdef DEBUG
 
-static char *pool_name(int pool)
+static const char *pool_name(int pool)
 {
-   static char *name[] = {"NoPool", "NAME  ", "FNAME ", "MSG   ", "EMSG  "};
+   static const char *name[] = {"NoPool", "NAME  ", "FNAME ", "MSG   ", "EMSG  "};
    static char buf[30];
 
    if (pool >= 0 && pool <= PM_MAX) {
index 4aee2447569a4805cacf729726a1dadfb006be2d..794fe4f9ce1994c8e026026df6c3567b3c6de8bc 100755 (executable)
@@ -43,7 +43,7 @@
  *  This is where we define "Globals" because all the
  *    daemons include this file.
  */
-char *working_directory = NULL;       /* working directory path stored here */
+const char *working_directory = NULL;      /* working directory path stored here */
 int verbose = 0;                     /* increase User messages */
 int debug_level = 0;                 /* debug level */
 time_t daemon_start_time = 0;        /* Daemon start time */
@@ -258,7 +258,7 @@ init_msg(JCR *jcr, MSGS *msg)
 /* Initialize so that the console (User Agent) can
  * receive messages -- stored in a file.
  */
-void init_console_msg(char *wd)
+void init_console_msg(const char *wd)
 {
    int fd;
 
@@ -372,18 +372,30 @@ static void make_unique_mail_filename(JCR *jcr, POOLMEM **name, DEST *d)
 static BPIPE *open_mail_pipe(JCR *jcr, POOLMEM **cmd, DEST *d)
 {
    BPIPE *bpipe;
-
-   if (d->mail_cmd && jcr) {
+   int use_bsmtp = (d->mail_cmd && jcr);
+       
+   if (use_bsmtp) {
       *cmd = edit_job_codes(jcr, *cmd, d->mail_cmd, d->where);
    } else {
+#if 1
+      Mmsg(cmd, "/usr/lib/sendmail -F Bacula %s", d->where);
+#else
       Mmsg(cmd, "mail -s \"Bacula Message\" %s", d->where);
+#endif
    }
    fflush(stdout);
 
    if (!(bpipe = open_bpipe(*cmd, 120, "rw"))) {
       Jmsg(jcr, M_ERROR, 0, "open mail pipe %s failed: ERR=%s\n", 
         *cmd, strerror(errno));
-   } 
+   }
+
+#if 1
+   if (!use_bsmtp) {
+       fprintf(bpipe->wfd, "Subject: Bacula Message\r\n\r\n");
+   }
+#endif
+   
    return bpipe;
 }
 
@@ -742,7 +754,7 @@ d_msg(const char *file, int line, int level, const char *fmt,...)
          /* visual studio passes the whole path to the file as well
           * which makes for very long lines
           */
-          char *f = strrchr(file, '\\');
+          const char *f = strrchr(file, '\\');
          if (f) file = f + 1;
           len = bsnprintf(buf, sizeof(buf), "%s: %s:%d ", my_name, file, line);
        } else {
index 4bd66244d1a4663dfca636599f9a14762f26ee67..a58f8a1328cd6b5f46bfee701b7edd721310e74f 100644 (file)
@@ -127,6 +127,6 @@ void Jmsg(JCR *jcr, int type, int level, const char *fmt,...);
 extern int debug_level;
 extern int verbose;
 extern char my_name[];
-extern char *working_directory;
+extern const char *working_directory;
 extern time_t daemon_start_time;
 extern char catalog_db[];
index 8c4466051e2c4d09bf7450a6f03fffcbd5b025dd..2e46a4ce79bc0cd2985a20f2358794ff4c1d0159 100755 (executable)
@@ -130,7 +130,7 @@ static struct s_mtypes msg_types[] = {
 
 
 /* Simply print a message */
-static void prtmsg(void *sock, char *fmt, ...)
+static void prtmsg(void *sock, const char *fmt, ...)
 {
    va_list arg_ptr;
 
index ad91d45994892241e4f25778c18122f86c40464f..536e89e3c1ef8c9457fc560931c4949062fe32c0 100644 (file)
@@ -106,7 +106,7 @@ RES *GetResWithName(int rcode, char *name);
 RES *GetNextRes(int rcode, RES *res);
 void b_LockRes(const char *file, int line);
 void b_UnlockRes(const char *file, int line);
-void dump_resource(int type, RES *res, void sendmsg(void *sock, char *fmt, ...), void *sock);
+void dump_resource(int type, RES *res, void sendmsg(void *sock, const char *fmt, ...), void *sock);
 void free_resource(RES *res, int type);
 void init_resource(int type, RES_ITEM *item);
 void save_resource(int type, RES_ITEM *item, int pass);
index 931659b865cdbd45d87f8f716ea0bbb9c7305341..a60caa4d4b7b7aff8a77522f0e7e855f24a52d1d 100644 (file)
@@ -73,12 +73,12 @@ BSOCK *    bnet_connect            (JCR *jcr, int retry_interval,
                int max_retry_time, const char *name, char *host, char *service, 
                int port, int verbose);
 void       bnet_close            (BSOCK *bsock);
-BSOCK *    init_bsock            (JCR *jcr, int sockfd, const char *who, char *ip, 
+BSOCK *    init_bsock            (JCR *jcr, int sockfd, const char *who, const char *ip, 
                                   int port, struct sockaddr_in *client_addr);
 BSOCK *    dup_bsock             (BSOCK *bsock);
 void       term_bsock            (BSOCK *bsock);
 char *     bnet_strerror         (BSOCK *bsock);
-char *     bnet_sig_to_ascii     (BSOCK *bsock);
+const char *bnet_sig_to_ascii     (BSOCK *bsock);
 int        bnet_wait_data        (BSOCK *bsock, int sec);
 int        bnet_wait_data_intr   (BSOCK *bsock, int sec);
 int        bnet_despool_to_bsock (BSOCK *bsock, void update(ssize_t size), ssize_t size);
@@ -148,7 +148,7 @@ void       add_msg_dest          (MSGS *msg, int dest, int type, char *where, ch
 void       rem_msg_dest          (MSGS *msg, int dest, int type, char *where);
 void       Jmsg                  (JCR *jcr, int type, int level, const char *fmt, ...);
 void       dispatch_message      (JCR *jcr, int type, int level, char *buf);
-void       init_console_msg      (char *wd);
+void       init_console_msg      (const char *wd);
 void       free_msgs_res         (MSGS *msgs);
 void       dequeue_messages      (JCR *jcr);
 void       set_trace             (int trace_flag);
@@ -179,7 +179,7 @@ void             strip_trailing_junk     (char *str);
 void             strip_trailing_slashes  (char *dir);
 bool             skip_spaces             (char **msg);
 bool             skip_nonspaces          (char **msg);
-int              fstrsch                 (char *a, char *b);
+int              fstrsch                 (const char *a, const char *b);
 char            *next_arg(char **s);
 int              parse_args(POOLMEM *cmd, POOLMEM **args, int *argc, 
                         char **argk, char **argv, int max_args);
@@ -200,9 +200,9 @@ void             jobstatus_to_ascii      (int JobStatus, char *msg, int maxlen);
 int              pm_strcat               (POOLMEM **pm, const char *str);
 int              pm_strcpy               (POOLMEM **pm, const char *str);
 int              run_program             (char *prog, int wait, POOLMEM *results);
-char *           job_type_to_str         (int type);
-char *           job_status_to_str       (int stat);
-char *           job_level_to_str        (int level);
+const char *     job_type_to_str         (int type);
+const char *     job_status_to_str       (int stat);
+const char *     job_level_to_str        (int level);
 void             make_session_key        (char *key, char *seed, int mode);
 POOLMEM         *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to);
 void             set_working_directory(char *wd);
index 3c42135e2cd0759dcab20bdd24e5162159d41575..6cfdc0625c3fe10a366f0c84924a555e0a7bdf15 100644 (file)
@@ -94,10 +94,10 @@ bool skip_nonspaces(char **msg)
 
 /* folded search for string - case insensitive */
 int
-fstrsch(char *a, char *b)   /* folded case search */
+fstrsch(const char *a, const char *b)   /* folded case search */
 {
-   register char *s1,*s2;
-   register char c1, c2;
+   const char *s1,*s2;
+   char c1, c2;
 
    s1=a;
    s2=b;
index 6c2598e0c20b3da5aa14fd383d45ba17019b5e66..46e0390a7d669cb6315ec40e5d800bc5d9103c61 100644 (file)
@@ -165,11 +165,12 @@ void serial_float64(uint8_t * * const ptr, const float64_t v)
     *ptr += sizeof(float64_t);
 }
 
-int serial_string(uint8_t * const ptr, char * const str)
+void serial_string(uint8_t * * const ptr, const char * const str)
 {
-   int len = strlen((const char *) str) + 1;
-   memcpy(ptr, str, len);
-   return len;
+   int len = strlen(str) + 1;
+   
+   memcpy(*ptr, str, len);
+   *ptr += len;
 }
 
 
@@ -293,9 +294,9 @@ float64_t unserial_float64(uint8_t * * const ptr)
     return v;
 }
 
-int unserial_string(uint8_t  * const ptr, char * const str)
+void unserial_string(uint8_t * * const ptr, char * const str)
 {
-   int len = strlen((char *)ptr) + 1;
-   memcpy(str, ptr, len);
-   return len;
+   int len = strlen((char *) *ptr) + 1;
+   memcpy(str, (char *) *ptr, len);
+   *ptr += len;
 }
index 22bea5d2db2684a56162a49360ed2903059c9173..e1c835ccfaf55301aefd419d45dc91abfd1adf8f 100644 (file)
@@ -33,7 +33,8 @@ extern void serial_int64(uint8_t * * ptr, int64_t v);
 extern void serial_uint64(uint8_t * * const ptr, const uint64_t v);
 extern void serial_btime(uint8_t * * const ptr, const btime_t v);
 extern void serial_float64(uint8_t * * const ptr, const float64_t v);
-extern int  serial_string(uint8_t * const ptr, char * const str);
+extern void serial_string(uint8_t * * const ptr, const char * const str);
+
 extern int16_t unserial_int16(uint8_t * * const ptr);
 extern uint16_t unserial_uint16(uint8_t * * const ptr);
 extern int32_t unserial_int32(uint8_t * * const ptr);
@@ -42,7 +43,7 @@ extern int64_t unserial_int64(uint8_t * * const ptr);
 extern uint64_t unserial_uint64(uint8_t * * const ptr);
 extern btime_t unserial_btime(uint8_t * * const ptr);
 extern float64_t unserial_float64(uint8_t * * const ptr);
-extern int unserial_string(uint8_t * const ptr, char * const str);
+extern void unserial_string(uint8_t * * const ptr, char * const str);
 
 /*
 
@@ -116,7 +117,7 @@ extern int unserial_string(uint8_t * const ptr, char * const str);
 #define ser_buffer(x)   ser_bytes((x), (sizeof (x)))
 
 /* Binary string not requiring serialization */
-#define ser_string(x)   ser_ptr += serial_string(ser_ptr, (x))
+#define ser_string(x)   serial_string(&ser_ptr, (x))
 
 /*                         Unserialisation                  */
 
@@ -156,6 +157,6 @@ extern int unserial_string(uint8_t * const ptr, char * const str);
 #define unser_buffer(x)  unser_bytes((x), (sizeof (x)))
 
 /* Binary string not requiring serialization */
-#define unser_string(x) ser_ptr += unserial_string(ser_ptr, (x))
+#define unser_string(x) unserial_string(&ser_ptr, (x))
 
 #endif /* __SERIAL_H_ */
index e23d8abafdc648e945e639412f32cf83e3d7aff4..3086e5c527c39a4e0d77e87548379eeed3958e55 100644 (file)
@@ -147,7 +147,7 @@ int pm_strcpy(POOLMEM **pm, const char *str)
  */
 void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen)
 {
-   char *jobstat;
+   const char *jobstat;
    char buf[100];
 
    switch (JobStatus) {
@@ -222,9 +222,9 @@ void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen)
 /*
  * Convert Job Termination Status into a string
  */
-char *job_status_to_str(int stat) 
+const char *job_status_to_str(int stat) 
 {
-   char *str;
+   const char *str;
 
    switch (stat) {
    case JS_Terminated:
@@ -254,9 +254,9 @@ char *job_status_to_str(int stat)
 /*
  * Convert Job Type into a string
  */
-char *job_type_to_str(int type) 
+const char *job_type_to_str(int type) 
 {
-   char *str;
+   const char *str;
 
    switch (type) {
    case JT_BACKUP:
@@ -281,9 +281,9 @@ char *job_type_to_str(int type)
 /*
  * Convert Job Level into a string
  */
-char *job_level_to_str(int level) 
+const char *job_level_to_str(int level) 
 {
-   char *str;
+   const char *str;
 
    switch (level) {
    case L_BASE:
@@ -364,7 +364,7 @@ int do_shell_expansion(char *name, int name_len)
    POOLMEM *cmd;
    BPIPE *bpipe;
    char line[MAXSTRING];
-   char *shellcmd;
+   const char *shellcmd;
 
    /* Check if any meta characters are present */
    len = strlen(meta);
index 1f1050e5b9f63f06a783ca6163dda312fbfc41a4..eb33b0eade932415056be62af313d15c4cdf6bce 100644 (file)
@@ -114,7 +114,7 @@ var_mvxprintf(
 {
     /* sufficient integer buffer: <available-bits> x log_10(2) + safety */
     char ibuf[((sizeof(int)*8)/3)+10]; 
-    char *cp;
+    const char *cp;
     char c;
     int d;
     int n;
@@ -2705,9 +2705,9 @@ static const char *var_errors[] = {
 };
 
 /* translate a return code into its corresponding descriptive text */
-char *var_strerror(var_t *var, var_rc_t rc)
+const char *var_strerror(var_t *var, var_rc_t rc)
 {
-    char *str;
+    const char *str;
     rc = (var_rc_t)(0 - rc);
     if (rc < 0 || rc >= (int)sizeof(var_errors) / (int)sizeof(char *)) {
         str = "unknown error";
index 5bba30f3a883d1e4e6d8d2f83834f4087801dfce..4931075663c76e20a100119fc0880c705ac5a614 100644 (file)
@@ -110,7 +110,7 @@ typedef struct {
     char  index_open;   /* default: '[' */
     char  index_close;  /* default: ']' */
     char  index_mark;   /* default: '#' */
-    char *name_chars;   /* default: "a-zA-Z0-9_" */
+    const char *name_chars;   /* default: "a-zA-Z0-9_" */
 } var_syntax_t;
 
 typedef var_rc_t (*var_cb_value_t)(
@@ -135,6 +135,6 @@ var_rc_t  var_unescape  (var_t  *var, const char *src_ptr, int src_len, char  *d
 var_rc_t  var_expand    (var_t  *var, const char *src_ptr, int src_len, char **dst_ptr, int *dst_len, int force_expand);
 var_rc_t  var_formatv   (var_t  *var, char **dst_ptr, int force_expand, const char *fmt, va_list ap);
 var_rc_t  var_format    (var_t  *var, char **dst_ptr, int force_expand, const char *fmt, ...);
-char     *var_strerror  (var_t  *var, var_rc_t rc);            
+const char *var_strerror  (var_t  *var, var_rc_t rc);            
 
 #endif /* __VAR_H__ */
index 926e0db90c03d6f89ed8eae54cc1f730c0cc58a3..935906d8377b2da26fb800de085587ecdd50f681 100644 (file)
@@ -458,7 +458,7 @@ volumes for Job=%s.\n"), jcr->Job);
 int dir_ask_sysop_to_mount_volume(JCR *jcr, DEVICE *dev)
 {
    int stat = 0;
-   char *msg;
+   const char *msg;
 
    Dmsg0(130, "enter dir_ask_sysop_to_mount_volume\n");
    if (!jcr->VolumeName[0]) {
index f8c35fecb587e7be5d156d23319a82632302dad2..67cca5bad6ebbbe8f7e74ec4844b8d2d1348a4f0 100644 (file)
@@ -30,7 +30,7 @@
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
 /* Forward referenced functions */
-char *edit_device_codes(JCR *jcr, char *omsg, char *imsg, char *cmd);
+char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd);
 static int get_autochanger_loaded_slot(JCR *jcr);
 
 
@@ -260,9 +260,9 @@ bail_out:
  *  cmd = command string (load, unload, ...) 
  *
  */
-char *edit_device_codes(JCR *jcr, char *omsg, char *imsg, char *cmd) 
+char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd) 
 {
-   char *p;
+   const char *p;
    const char *str;
    char add[20];
 
index 7f26e79d6d7c34286009d3b71fde0a2fced6205d..ff3028a7e53f0bb8c383275f2f35baf889b3315b 100644 (file)
@@ -40,7 +40,7 @@ static DEVICE *out_dev = NULL;
 static JCR *in_jcr;                   /* input jcr */
 static JCR *out_jcr;                  /* output jcr */
 static BSR *bsr = NULL;
-static char *wd = "/tmp";
+static const char *wd = "/tmp";
 static int list_records = 0;
 static uint32_t records = 0;
 static uint32_t jobs = 0;
index cd33bf46b6f2c049bdade461ebddef192dbc1eaa..2f23ffee5292dce61bb71ccc454e7fc001ec4821 100644 (file)
@@ -38,7 +38,7 @@ extern int debug_level;
  * Dump the block header, then walk through
  * the block printing out the record headers.
  */
-void dump_block(DEV_BLOCK *b, char *msg)
+void dump_block(DEV_BLOCK *b, const char *msg)
 {
    ser_declare;
    char *p;
index 6ac0380bc22b9d9d603e9f3f6c303f887983d0bf..20c03fc31808e2484982c1b81506b80422e6e3d1 100644 (file)
@@ -353,7 +353,7 @@ static int record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
        rec->Stream == STREAM_UNIX_ATTRIBUTES_EX) {
 
       if (verbose > 1) {
-         char *rtype = "Attributes";
+         const char *rtype = "Attributes";
          Pmsg5(-1, "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n",
               rtype, rec->VolSessionId, rec->VolSessionTime, rec->Stream, rec->data_len);
       }
@@ -382,7 +382,7 @@ static int record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
 
 static void get_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *sessrec)
 {
-   char *rtype;
+   const char *rtype;
    memset(sessrec, 0, sizeof(sessrec));
    switch (rec->FileIndex) {
    case PRE_LABEL:
index 1e11d8560a0f2953472f791b918b5121832da02c..be9103d19a456f8bdba593322398ca477e220514 100644 (file)
@@ -80,11 +80,11 @@ static ATTR *attr;
 
 static time_t lasttime = 0;
 
-static char *db_name = "bacula";
-static char *db_user = "bacula";
-static char *db_password = "";
-static char *db_host = NULL;
-static char *wd = NULL;
+static const char *db_name = "bacula";
+static const char *db_user = "bacula";
+static const char *db_password = "";
+static const char *db_host = NULL;
+static const char *wd = NULL;
 static int update_db = 0;
 static int update_vol_info = 0;
 static int list_records = 0;
@@ -987,7 +987,7 @@ static int update_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *elabel,
       Pmsg1(000, _("Updated Job termination record for new JobId=%u\n"), jr->JobId);
    }
    if (verbose > 1) {
-      char *term_msg;
+      const char *term_msg;
       static char term_code[70];
       char sdt[50], edt[50];
       char ec1[30], ec2[30], ec3[30];
index 6521425ecf3caa317411e1d7b2d389cf2d96ccc0..112c5d808225c82d574e5a255fbb353ae95ef536 100644 (file)
@@ -39,7 +39,7 @@
 
 /* External subroutines */
 extern void free_config_resources();
-extern char *edit_device_codes(JCR *jcr, char *omsg, char *imsg, char *cmd);
+extern char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd);
 
 /* Exported variables */
 int quit = 0;
@@ -79,7 +79,7 @@ static int quickie_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec);
 static bool compare_blocks(DEV_BLOCK *last_block, DEV_BLOCK *block);
 static int my_mount_next_read_volume(JCR *jcr, DEVICE *dev, DEV_BLOCK *block);
 static void scan_blocks();
-static void set_volume_name(char *VolName, int volnum);
+static void set_volume_name(const char *VolName, int volnum);
 static void rawfill_cmd();
 static void bfill_cmd();
 static bool open_the_device();
@@ -128,7 +128,7 @@ static uint32_t last_block_num = 0;
 static uint32_t BlockNumber = 0;
 static bool simple = true; 
 
-static char *VolumeName = NULL;
+static const char *VolumeName = NULL;
 static int vol_num = 0;
 
 static JCR *jcr = NULL;
@@ -136,7 +136,7 @@ static JCR *jcr = NULL;
 
 static void usage();
 static void terminate_btape(int sig);
-int get_cmd(char *prompt);
+int get_cmd(const char *prompt);
 
 
 /*********************************************************************
@@ -2394,7 +2394,7 @@ static void bfill_cmd()
 }
 
 
-struct cmdstruct { char *key; void (*func)(); char *help; }; 
+struct cmdstruct { const char *key; void (*func)(); const char *help; }; 
 static struct cmdstruct commands[] = {
  {"autochanger", autochangercmd, "test autochanger"},
  {"bsf",        bsfcmd,       "backspace file"},
@@ -2483,7 +2483,7 @@ static void usage()
  * to have correct backspacing, etc.
  */
 int 
-get_cmd(char *prompt)
+get_cmd(const char *prompt)
 {
    int i = 0;
    int ch;
@@ -2628,7 +2628,7 @@ static int my_mount_next_read_volume(JCR *jcr, DEVICE *dev, DEV_BLOCK *block)
    return 1;                      /* next volume mounted */
 }
 
-static void set_volume_name(char *VolName, int volnum) 
+static void set_volume_name(const char *VolName, int volnum) 
 {
    DCR *dcr = jcr->dcr;
    VolumeName = VolName;
@@ -2661,7 +2661,7 @@ static void set_volume_name(char *VolName, int volnum)
  *  cmd = command string (load, unload, ...) 
  *
  */
-static char *edit_device_codes(JCR *jcr, char *omsg, char *imsg, char *cmd) 
+static char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd) 
 {
    char *p;
    const char *str;
index 9f811f289240566e4211b628e2327f0632371548..82cffafb3de65a6a7bcb92e8ac701776f0f0871e 100644 (file)
@@ -220,7 +220,7 @@ static void my_free_jcr(JCR *jcr)
  * Setup a "daemon" JCR for the various standalone
  *  tools (e.g. bls, bextract, bscan, ...)
  */
-JCR *setup_jcr(char *name, char *device, BSR *bsr, char *VolumeName)
+JCR *setup_jcr(const char *name, const char *device, BSR *bsr, const char *VolumeName)
 {
    JCR *jcr = new_jcr(sizeof(JCR), my_free_jcr);
    jcr->VolSessionId = 1;
index 5ce70d864e977c8f4df19c13ddb1024762f80555..a4773fba7168eee0622d02548dfb77bed6f86316 100644 (file)
@@ -1165,7 +1165,7 @@ strerror_dev(DEVICE *dev)
 void
 clrerror_dev(DEVICE *dev, int func)
 {
-   char *msg = NULL;
+   const char *msg = NULL;
 
    dev->dev_errno = errno;        /* save errno */
    if (errno == EIO) {
index d8bd920e6a694940af9a5332cbe4618aee955278..69fc18a29aa0d333aba9695c285de970ad961b64 100644 (file)
@@ -320,7 +320,7 @@ int open_device(JCR *jcr, DEVICE *dev)
  * must wait. The no_wait_id thread is out obtaining a new volume
  * and preparing the label.
  */
-void _lock_device(char *file, int line, DEVICE *dev)
+void _lock_device(const char *file, int line, DEVICE *dev)
 {
    int stat;
    Dmsg3(500, "lock %d from %s:%d\n", dev->dev_blocked, file, line);
@@ -351,7 +351,7 @@ int device_is_unmounted(DEVICE *dev)
    return stat;
 }
 
-void _unlock_device(char *file, int line, DEVICE *dev) 
+void _unlock_device(const char *file, int line, DEVICE *dev) 
 {
    Dmsg2(500, "unlock from %s:%d\n", file, line);
    V(dev->mutex);
@@ -365,7 +365,7 @@ void _unlock_device(char *file, int line, DEVICE *dev)
  *  the current thread can do slip through the lock_device()
  *  calls without blocking.
  */
-void _block_device(char *file, int line, DEVICE *dev, int state)
+void _block_device(const char *file, int line, DEVICE *dev, int state)
 {
    Dmsg3(500, "block set %d from %s:%d\n", state, file, line);
    ASSERT(dev->dev_blocked == BST_NOT_BLOCKED);
@@ -378,7 +378,7 @@ void _block_device(char *file, int line, DEVICE *dev, int state)
 /*
  * Unblock the device, and wake up anyone who went to sleep.
  */
-void _unblock_device(char *file, int line, DEVICE *dev)
+void _unblock_device(const char *file, int line, DEVICE *dev)
 {
    Dmsg3(500, "unblock %d from %s:%d\n", dev->dev_blocked, file, line);
    ASSERT(dev->dev_blocked);
@@ -393,7 +393,7 @@ void _unblock_device(char *file, int line, DEVICE *dev)
  * Enter with device locked and blocked
  * Exit with device unlocked and blocked by us.
  */
-void _steal_device_lock(char *file, int line, DEVICE *dev, bsteal_lock_t *hold, int state)
+void _steal_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock_t *hold, int state)
 {
    Dmsg4(500, "steal lock. old=%d new=%d from %s:%d\n", dev->dev_blocked, state,
       file, line);
@@ -409,7 +409,7 @@ void _steal_device_lock(char *file, int line, DEVICE *dev, bsteal_lock_t *hold,
  * Enter with device blocked by us but not locked
  * Exit with device locked, and blocked by previous owner 
  */
-void _give_back_device_lock(char *file, int line, DEVICE *dev, bsteal_lock_t *hold)          
+void _give_back_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock_t *hold)            
 {
    Dmsg4(500, "return lock. old=%d new=%d from %s:%d\n", 
       dev->dev_blocked, hold->dev_blocked, file, line);
index 241855ef554c44b788f1ec0914805128aa9c5ad2..39c33bfecc4a2ae3d26acd099408c3e199e7dece 100644 (file)
@@ -79,7 +79,7 @@ static void label_volume_if_ok(JCR *jcr, DEVICE *dev, char *oldname,
                               int Slot, int relabel);
 
 struct s_cmds {
-   char *cmd;
+   const char *cmd;
    int (*func)(JCR *jcr);
 };
 
index e7129a25f301d3453eebf851914c31751dd6faca..40b23cc0ffe6d75a79648c0076bf2a254d40e26d 100644 (file)
@@ -57,7 +57,7 @@ static int read_close_session(JCR *jcr);
 static int bootstrap_cmd(JCR *jcr);
 
 struct s_cmds {
-   char *cmd;
+   const char *cmd;
    int (*func)(JCR *jcr);
 };
 
index 5e0a9b9109132917a1062f15b5af65b249c497ae..79a3b3b8eb2715c6e078a5a55bbcf87a8c07f97d 100644 (file)
@@ -328,7 +328,7 @@ static void create_volume_label_record(JCR *jcr, DEVICE *dev, DEV_RECORD *rec)
  *  Returns: 0 on error
  *          1 on success
  */
-void create_volume_label(DEVICE *dev, char *VolName, char *PoolName)
+void create_volume_label(DEVICE *dev, const char *VolName, const char *PoolName)
 {
    DEVRES *device = (DEVRES *)dev->device;
 
@@ -374,7 +374,7 @@ void create_volume_label(DEVICE *dev, char *VolName, char *PoolName)
  *
  *  This routine should be used only when labeling a blank tape.
  */
-int write_volume_label_to_dev(JCR *jcr, DEVRES *device, char *VolName, char *PoolName)
+int write_volume_label_to_dev(JCR *jcr, DEVRES *device, const char *VolName, const char *PoolName)
 {
    DEVICE *dev = device->dev;
    DEV_RECORD rec;   
@@ -561,7 +561,8 @@ void dump_volume_label(DEVICE *dev)
 {
    int dbl = debug_level;
    uint32_t File;
-   char *LabelType, buf[30];
+   const char *LabelType;
+   char buf[30];
    struct tm tm;
    struct date_time dt;
 
@@ -676,7 +677,7 @@ int unser_session_label(SESSION_LABEL *label, DEV_RECORD *rec)
 }
 
 
-static void dump_session_label(DEV_RECORD *rec, char *type)
+static void dump_session_label(DEV_RECORD *rec, const char *type)
 {
    int dbl;
    struct date_time dt;
@@ -745,7 +746,7 @@ Date written      : %04d-%02d-%02d at %02d:%02d\n"),
 
 void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
 {
-   char *type;
+   const char *type;
    int dbl;
 
    dbl = debug_level;
index 3e469dadfea5078d25ea2740f65e74a3b5c8d375..10c05d3d9d3ddd78b13de4b845dd75758b9ac8a4 100755 (executable)
@@ -51,7 +51,7 @@ static bool is_fast_rejection_ok(BSR *bsr);
 static bool is_positioning_ok(BSR *bsr);
 
 struct kw_items {
-   char *name;
+   const char *name;
    ITEM_HANDLER *handler;
 };
 
index ca4e5e9abdb8ff73225a225812655175b60ed20d..819251964f5ffd5405feeeac4b18988a023e3998 100644 (file)
@@ -53,7 +53,7 @@ int     authenticate_director(JCR *jcr);
 int     authenticate_filed(JCR *jcr);
 
 /* From block.c */
-void    dump_block(DEV_BLOCK *b, char *msg);
+void    dump_block(DEV_BLOCK *b, const char *msg);
 DEV_BLOCK *new_block(DEVICE *dev);
 DEV_BLOCK *dup_block(DEV_BLOCK *eblock);
 void    init_block_write(DEV_BLOCK *block);
@@ -70,8 +70,8 @@ int     read_block_from_device(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, bool che
 int     read_block_from_dev(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, bool check_block_numbers);
 
 /* From butil.c -- utilities for SD tool programs */
-void    print_ls_output(char *fname, char *link, int type, struct stat *statp);
-JCR    *setup_jcr(char *name, char *device, BSR *bsr, char *VolumeName);
+void    print_ls_output(const char *fname, const char *link, int type, struct stat *statp);
+JCR    *setup_jcr(const char *name, const char * device, BSR *bsr, const char *VolumeName);
 DEVICE *setup_to_access_device(JCR *jcr, int read_access);
 void    display_tape_error_status(JCR *jcr, DEVICE *dev);
 DEVRES *find_device_res(char *device_name, int read_access);
@@ -122,12 +122,12 @@ int      dev_is_tape(DEVICE *dev);
 int      open_device(JCR *jcr, DEVICE *dev);
 int      first_open_device(DEVICE *dev);
 int      fixup_device_block_write_error(JCR *jcr, DEVICE *dev, DEV_BLOCK *block);
-void     _lock_device(char *file, int line, DEVICE *dev);
-void     _unlock_device(char *file, int line, DEVICE *dev);
-void     _block_device(char *file, int line, DEVICE *dev, int state);
-void     _unblock_device(char *file, int line, DEVICE *dev);
-void     _steal_device_lock(char *file, int line, DEVICE *dev, bsteal_lock_t *hold, int state);
-void     _give_back_device_lock(char *file, int line, DEVICE *dev, bsteal_lock_t *hold);
+void     _lock_device(const char *file, int line, DEVICE *dev);
+void     _unlock_device(const char *file, int line, DEVICE *dev);
+void     _block_device(const char *file, int line, DEVICE *dev, int state);
+void     _unblock_device(const char *file, int line, DEVICE *dev);
+void     _steal_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock_t *hold, int state);
+void     _give_back_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock_t *hold);
 void     set_new_volume_parameters(JCR *jcr, DEVICE *dev);
 void     set_new_file_parameters(JCR *jcr, DEVICE *dev); 
 int      device_is_unmounted(DEVICE *dev);
@@ -147,8 +147,8 @@ void     handle_filed_connection(BSOCK *fd, char *job_name);
 /* From label.c */
 int      read_dev_volume_label(JCR *jcr, DEVICE *dev, DEV_BLOCK *block);
 void     create_session_label(JCR *jcr, DEV_RECORD *rec, int label);
-void     create_volume_label(DEVICE *dev, char *VolName, char *PoolName);
-int      write_volume_label_to_dev(JCR *jcr, DEVRES *device, char *VolName, char *PoolName);
+void     create_volume_label(DEVICE *dev, const char *VolName, const char *PoolName);
+int      write_volume_label_to_dev(JCR *jcr, DEVRES *device, const char *VolName, const char *PoolName);
 int      write_session_label(JCR *jcr, DEV_BLOCK *block, int label);
 int      write_volume_label_to_block(JCR *jcr, DEVICE *dev, DEV_BLOCK *block);
 void     dump_volume_label(DEVICE *dev);
@@ -186,8 +186,8 @@ void     free_vol_list(JCR *jcr);
 void     create_vol_list(JCR *jcr);
 
 /* From record.c */
-char    *FI_to_ascii(int fi);
-char    *stream_to_ascii(int stream, int fi);
+const char *FI_to_ascii(int fi);
+const char *stream_to_ascii(int stream, int fi);
 int      write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec);
 int      can_write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec);
 int      read_record_from_block(DEV_BLOCK *block, DEV_RECORD *rec); 
index 64a3d6e49c9abe840cadac72516a29ce4eb5ab7a..1feae772c9e52e9f0e03b4fdbf9a5a09f16b335e 100644 (file)
@@ -312,8 +312,9 @@ static BSR *position_to_first_file(JCR *jcr, DEVICE *dev)
 
 static void handle_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *sessrec)
 {
-   char *rtype;
+   const char *rtype;
    char buf[100];
+   
    memset(sessrec, 0, sizeof(sessrec));
    switch (rec->FileIndex) {
    case PRE_LABEL:
index cc8ea04b7150b867c452ef4b33abfdf972e4baf5..060311ed565dc8dc8585565395f7aa8fabb6a5d8 100644 (file)
@@ -41,7 +41,7 @@ extern int debug_level;
  *   record as a Label, otherwise it is simply
  *   the FileIndex of the current file.
  */
-char *FI_to_ascii(int fi)
+const char *FI_to_ascii(int fi)
 {
    static char buf[20];
    if (fi >= 0) {
@@ -80,7 +80,7 @@ char *FI_to_ascii(int fi)
  *   dealing with a Label, hence the
  *   stream is the JobId.
  */
-char *stream_to_ascii(int stream, int fi)
+const char *stream_to_ascii(int stream, int fi)
 {
     static char buf[20];
     if (fi < 0) {
index ddc449acdebad3b13878e924a2c1994ace717bed..a9caea326f61e424bdb2972bffcda37dc8f54778 100644 (file)
@@ -131,7 +131,7 @@ bool commit_data_spool(JCR *jcr)
 
 static void make_unique_data_spool_filename(JCR *jcr, POOLMEM **name)
 {
-   char *dir;  
+   const char *dir;  
    if (jcr->dcr->dev->device->spool_directory) {
       dir = jcr->dcr->dev->device->spool_directory;
    } else {
index 156f5bd854c9b794676d9e4a0bfbb8ac579b74a5..6278f41ee221ea3af95cc881c47e1060a0c7625c 100644 (file)
@@ -46,8 +46,8 @@ extern int num_jobs_run;
 static void send_blocked_status(JCR *jcr, DEVICE *dev);
 static void list_terminated_jobs(void *arg);
 static void list_running_jobs(BSOCK *user);
-static void sendit(char *msg, int len, void *arg);
-static char *level_to_str(int level);
+static void sendit(const char *msg, int len, void *arg);
+static const char *level_to_str(int level);
 
 
 /*
@@ -275,7 +275,7 @@ static void list_terminated_jobs(void *arg)
    char dt[MAX_TIME_LENGTH], b1[30], b2[30];
    char level[10];
    struct s_last_job *je;
-   char *msg;
+   const char *msg;
 
    if (last_jobs->size() == 0) {
       msg = _("No Terminated Jobs.\n"); 
@@ -291,7 +291,7 @@ static void list_terminated_jobs(void *arg)
    sendit(msg, strlen(msg), arg);
    foreach_dlist(je, last_jobs) {
       char JobName[MAX_NAME_LENGTH];
-      char *termstat;
+      const char *termstat;
       char buf[1000];
 
       bstrftime_nc(dt, sizeof(dt), je->end_time);
@@ -350,9 +350,9 @@ static void list_terminated_jobs(void *arg)
 /*
  * Convert Job Level into a string
  */
-static char *level_to_str(int level) 
+static const char *level_to_str(int level) 
 {
-   char *str;
+   const char *str;
 
    switch (level) {
    case L_BASE:
@@ -397,7 +397,7 @@ static char *level_to_str(int level)
 /*
  * Send to Director 
  */
-static void sendit(char *msg, int len, void *arg)
+static void sendit(const char *msg, int len, void *arg)
 {
    BSOCK *user = (BSOCK *)arg;
 
index 8e1558f9128e8a2987ddcee51aeb52a3bfd35190..b4c84f5b1ca70f486a5479f8a43c455a7ab863f6 100644 (file)
@@ -140,7 +140,7 @@ RES_TABLE resources[] = {
 
 
 /* Dump contents of resource */
-void dump_resource(int type, RES *reshdr, void sendit(void *sock, char *fmt, ...), void *sock)
+void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
 {
    URES *res = (URES *)reshdr;
    char buf[MAXSTRING];
index dde73adbb9bb22e48c2b109fe0f2b7c80ed3340a..d51c57b37b37aec5a641d701e2df44930e94b791 100644 (file)
@@ -63,7 +63,7 @@ static char *from_addr = NULL;
 static char *cc_addr = NULL;
 static char *subject = NULL;
 static char *err_addr = NULL;
-static char *mailhost = NULL;
+static const char *mailhost = NULL;
 static char *reply_addr = NULL;
 static int mailport = 25;
 static char my_hostname[MAXSTRING];
@@ -98,7 +98,7 @@ static void get_response(void)
 /*
  *  say something to server and check the response
  */
-static void chat(char *fmt, ...)
+static void chat(const char *fmt, ...)
 {
     va_list ap;
 
index 608284a87dd7181913c9a6205b74d1a551d5101d..bfbb3a56fe3d42b4d5fad4c97d34f08a5272832f 100644 (file)
@@ -61,12 +61,12 @@ static char buf[2000];
 #define MAX_ID_LIST_LEN 1000000
 
 /* Forward referenced functions */
-static int make_id_list(char *query, ID_LIST *id_list);
-static int delete_id_list(char *query, ID_LIST *id_list);
-static int make_name_list(char *query, NAME_LIST *name_list);
+static int make_id_list(const char *query, ID_LIST *id_list);
+static int delete_id_list(const char *query, ID_LIST *id_list);
+static int make_name_list(const char *query, NAME_LIST *name_list);
 static void print_name_list(NAME_LIST *name_list);
 static void free_name_list(NAME_LIST *name_list);
-static char *get_cmd(char *prompt);
+static char *get_cmd(const char *prompt);
 static void eliminate_duplicate_filenames();
 static void eliminate_duplicate_paths();
 static void eliminate_orphaned_jobmedia_records();
@@ -77,7 +77,7 @@ static void eliminate_orphaned_fileset_records();
 static void repair_bad_paths();
 static void repair_bad_filenames();
 static void do_interactive_mode();
-static int yes_no(char *prompt);
+static int yes_no(const char *prompt);
 
 
 static void usage()
@@ -97,7 +97,7 @@ static void usage()
 int main (int argc, char *argv[])
 {
    int ch;
-   char *user, *password, *db_name, *dbhost;
+   const char *user, *password, *db_name, *dbhost;
    char *configfile = NULL;
    char *catalogname = NULL;
 
@@ -241,7 +241,7 @@ int main (int argc, char *argv[])
 static void do_interactive_mode()
 {
    bool quit = false;
-   char *cmd;
+   const char *cmd;
 
    printf("Hello, this is the database check/correct program.\n\
 Modify database is %s. Verbose is %s.\n\
@@ -405,7 +405,7 @@ static int id_list_handler(void *ctx, int num_fields, char **row)
 /*
  * Construct record id list
  */
-static int make_id_list(char *query, ID_LIST *id_list)
+static int make_id_list(const char *query, ID_LIST *id_list)
 {
    id_list->num_ids = 0;
    id_list->num_del = 0;
@@ -421,7 +421,7 @@ static int make_id_list(char *query, ID_LIST *id_list)
 /*
  * Delete all entries in the list 
  */
-static int delete_id_list(char *query, ID_LIST *id_list)
+static int delete_id_list(const char *query, ID_LIST *id_list)
 { 
    for (int i=0; i < id_list->num_ids; i++) {
       sprintf(buf, query, id_list->Id[i]);
@@ -460,7 +460,7 @@ static int name_list_handler(void *ctx, int num_fields, char **row)
 /*
  * Construct name list
  */
-static int make_name_list(char *query, NAME_LIST *name_list)
+static int make_name_list(const char *query, NAME_LIST *name_list)
 {
    name_list->num_ids = 0;
    name_list->num_del = 0;
@@ -497,7 +497,7 @@ static void free_name_list(NAME_LIST *name_list)
 
 static void eliminate_duplicate_filenames()
 {
-   char *query;
+   const char *query;
    char esc_name[5000];
 
    printf("Checking for duplicate Filename entries.\n");
@@ -550,7 +550,7 @@ static void eliminate_duplicate_filenames()
 
 static void eliminate_duplicate_paths()
 {
-   char *query;
+   const char *query;
    char esc_name[5000];
 
    printf(_("Checking for duplicate Path entries.\n"));
@@ -604,7 +604,7 @@ static void eliminate_duplicate_paths()
 
 static void eliminate_orphaned_jobmedia_records()
 {
-   char *query;
+   const char *query;
 
    printf("Checking for orphaned JobMedia entries.\n");
    query = "SELECT JobMedia.JobMediaId,Job.JobId FROM JobMedia "
@@ -633,7 +633,7 @@ static void eliminate_orphaned_jobmedia_records()
 
 static void eliminate_orphaned_file_records()
 {
-   char *query;
+   const char *query;
 
    printf("Checking for orphaned File entries. This may take some time!\n");
    query = "SELECT File.FileId,Job.JobId FROM File "
@@ -665,7 +665,7 @@ static void eliminate_orphaned_file_records()
 
 static void eliminate_orphaned_path_records()
 {
-   char *query;
+   const char *query;
 
    printf("Checking for orphaned Path entries. This may take some time!\n");
    query = "SELECT Path.PathId,File.PathId FROM Path "
@@ -693,7 +693,7 @@ static void eliminate_orphaned_path_records()
 
 static void eliminate_orphaned_filename_records()
 {
-   char *query;
+   const char *query;
 
    printf("Checking for orphaned Filename entries. This may take some time!\n");
    query = "SELECT Filename.FilenameId,File.FilenameId FROM Filename "
@@ -721,7 +721,7 @@ static void eliminate_orphaned_filename_records()
 
 static void eliminate_orphaned_fileset_records()
 {
-   char *query;
+   const char *query;
 
    printf("Checking for orphaned FileSet entries. This takes some time!\n");
    query = "SELECT FileSet.FileSetId,Job.FileSetId FROM FileSet "
@@ -752,7 +752,7 @@ static void eliminate_orphaned_fileset_records()
 
 static void repair_bad_filenames()
 {
-   char *query;
+   const char *query;
    int i;
 
    printf("Checking for Filenames with a trailing slash\n");
@@ -810,7 +810,7 @@ static void repair_bad_filenames()
 
 static void repair_bad_paths()
 {
-   char *query;
+   const char *query;
    int i;
 
    printf("Checking for Paths without a trailing slash\n");
@@ -867,7 +867,7 @@ static void repair_bad_paths()
 /*
  * Gen next input command from the terminal
  */
-static char *get_cmd(char *prompt)
+static char *get_cmd(const char *prompt)
 {
    static char cmd[1000];
 
@@ -879,7 +879,7 @@ static char *get_cmd(char *prompt)
    return cmd;
 }
 
-static int yes_no(char *prompt)
+static int yes_no(const char *prompt)
 {
    char *cmd;  
    cmd = get_cmd(prompt);
index 43844756f3032d442727e951078c911324aa86a8..7ae7e586d12e26116bef2512e1c4d6dbda1d7bae 100644 (file)
@@ -1,9 +1,9 @@
 /* */
 #undef  VERSION
-#define VERSION "1.34.4"
+#define VERSION "1.35.0"
 #define VSTRING "1"
-#define BDATE   "12 June 2004"
-#define LSMDATE "12Jun04"
+#define BDATE   "14 June 2004"
+#define LSMDATE "14Jun04"
 
 /* Debug flags */
 #undef  DEBUG