#!/bin/sh
cd @SQL_BINDIR@
if [ -x ./safe_mysqld ]; then
- ./safe_mysqld &
+ ./safe_mysqld $* &
exit $?
fi
if [ -x ./mysqld_safe ]; then
- ./mysqld_safe &
+ ./mysqld_safe $* &
exit $?
fi
echo "Neither safe_mysqld nor mysqld_safe found!"
bindir=@SQL_BINDIR@
-if $bindir/mysql -f <<END-OF-DATA
+if $bindir/mysql $* -f <<END-OF-DATA
CREATE DATABASE bacula;
END-OF-DATA
then
bindir=@SQL_BINDIR@
cd @working_dir@
-$bindir/sqlite bacula.db <<END-OF-DATA
+$bindir/sqlite $* bacula.db <<END-OF-DATA
END-OF-DATA
exit 0
bindir=@SQL_BINDIR@
-if $bindir/mysql <<END-OF-DATA
+if $bindir/mysql *$ <<END-OF-DATA
USE bacula;
DROP TABLE IF EXISTS Filename;
DROP TABLE IF EXISTS Path;
bindir=@SQL_BINDIR@
-if $bindir/mysql -u root -f <<END-OF-DATA
+if $bindir/mysql $* -u root -f <<END-OF-DATA
use mysql
grant all privileges on *.* to kern@localhost with grant option;
grant all privileges on *.* to kern@"%" with grant option;
#
bindir=@SQL_BINDIR@
-if $bindir/mysql -f <<END-OF-DATA
+if $bindir/mysql $* -f <<END-OF-DATA
USE bacula;
CREATE TABLE Filename (
FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
bindir=@SQL_BINDIR@
cd @working_dir@
-$bindir/sqlite bacula.db <<END-OF-DATA
+$bindir/sqlite $* bacula.db <<END-OF-DATA
CREATE TABLE Filename (
FilenameId INTEGER UNSIGNED AUTOINCREMENT,
Name TEXT DEFAULT "",
send(ctx, "\n");
}
+/*
+ * If full_list is set, we list vertically, otherwise, we
+ * list on one line horizontally.
+ */
void
-list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx)
+list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, int full_list)
{
SQL_FIELD *field;
- SQL_ROW row;
- unsigned int i, col_len;
+ SQL_ROW row;
+ unsigned int i, col_len, max_len = 0;
char buf[2000], ewc[30];
if (mdb->result == NULL) {
sql_field_seek(mdb, 0);
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
- if (IS_NUM(field->type) && field->max_length > 0) { /* fixup for commas */
- field->max_length += (field->max_length - 1) / 3;
- }
col_len = strlen(field->name);
- if (col_len < field->max_length)
- col_len = field->max_length;
- if (col_len < 4 && !IS_NOT_NULL(field->flags))
- col_len = 4; /* 4 = length of the word "NULL" */
- field->max_length = col_len; /* reset column info */
+ if (full_list) {
+ if (col_len > max_len) {
+ max_len = col_len;
+ }
+ } else {
+ if (IS_NUM(field->type) && field->max_length > 0) { /* fixup for commas */
+ field->max_length += (field->max_length - 1) / 3;
+ }
+ if (col_len < field->max_length) {
+ col_len = field->max_length;
+ }
+ if (col_len < 4 && !IS_NOT_NULL(field->flags)) {
+ col_len = 4; /* 4 = length of the word "NULL" */
+ }
+ field->max_length = col_len; /* reset column info */
+ }
+ }
+
+ if (full_list) {
+ goto horizontal_list;
}
list_dashes(mdb, send, ctx);
sql_field_seek(mdb, 0);
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
- sprintf(buf, " %-*s |", (int)field->max_length, field->name);
+ bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, field->name);
send(ctx, buf);
}
send(ctx, "\n");
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
if (row[i] == NULL) {
- sprintf(buf, " %-*s |", (int)field->max_length, "NULL");
+ bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, "NULL");
} else if (IS_NUM(field->type)) {
- sprintf(buf, " %*s |", (int)field->max_length,
+ bsnprintf(buf, sizeof(buf), " %*s |", (int)field->max_length,
add_commas(row[i], ewc));
} else {
- sprintf(buf, " %-*s |", (int)field->max_length, row[i]);
+ bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, row[i]);
}
send(ctx, buf);
}
send(ctx, "\n");
}
list_dashes(mdb, send, ctx);
+ return;
+
+horizontal_list:
+
+ while ((row = sql_fetch_row(mdb)) != NULL) {
+ sql_field_seek(mdb, 0);
+ for (i = 0; i < sql_num_fields(mdb); i++) {
+ field = sql_fetch_field(mdb);
+ if (row[i] == NULL) {
+ bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name, "NULL");
+ } else if (IS_NUM(field->type)) {
+ bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name,
+ add_commas(row[i], ewc));
+ } else {
+ bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name, row[i]);
+ }
+ send(ctx, buf);
+ }
+ send(ctx, "\n");
+ }
+ return;
}
#
bindir=@SQL_BINDIR@
-$bindir/mysql bacula
+$bindir/mysql $* bacula
int db_create_media_record(void *jcr, B_DB *db, MEDIA_DBR *media_dbr);
int db_create_client_record(void *jcr, B_DB *db, CLIENT_DBR *cr);
int db_create_fileset_record(void *jcr, B_DB *db, FILESET_DBR *fsr);
-int db_create_pool_record(void *jcr, B_DB *db, POOL_DBR *pool_dbr);
+int db_create_pool_record(void *jcr, B_DB *db, POOL_DBR *pool_dbr);
int db_create_jobmedia_record(void *jcr, B_DB *mdb, JOBMEDIA_DBR *jr);
/* delete.c */
/* list.c */
-void db_list_pool_records(void *jcr, B_DB *db, DB_LIST_HANDLER sendit, void *ctx);
-void db_list_job_records(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
+void db_list_pool_records(void *jcr, B_DB *db, DB_LIST_HANDLER sendit, void *ctx, int full);
+void db_list_job_records(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx, int full);
void db_list_job_totals(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
void db_list_files_for_job(void *jcr, B_DB *db, uint32_t jobid, DB_LIST_HANDLER sendit, void *ctx);
-void db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx);
-void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx);
-int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, int verbose);
-void db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx);
+void db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx, int full);
+void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx, int full);
+int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, int verbose, int full);
+void db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full);
/* update.c */
int db_update_job_start_record(void *jcr, B_DB *db, JOB_DBR *jr);
*/
/* Imported subroutines */
-extern void list_result(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx);
+extern void list_result(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full_list);
extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
* Submit general SQL query
*/
int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit,
- void *ctx, int verbose)
+ void *ctx, int verbose, int full)
{
db_lock(mdb);
if (sql_query(mdb, query) != 0) {
mdb->result = sql_store_result(mdb);
if (mdb->result) {
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, full);
sql_free_result(mdb);
}
db_unlock(mdb);
}
void
-db_list_pool_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_pool_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full)
{
- Mmsg(&mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
-"FROM Pool ORDER BY PoolId");
+ if (full) {
+ Mmsg(&mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,"
+ "AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes,"
+ "AutoPrune,Recycle,PoolType,LabelFormat "
+ "FROM Pool ORDER BY PoolId");
+ } else {
+ Mmsg(&mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
+ "FROM Pool ORDER BY PoolId");
+ }
db_lock(mdb);
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, full);
sql_free_result(mdb);
db_unlock(mdb);
}
void
-db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, int full)
{
- Mmsg(&mdb->cmd, "SELECT ClientId,Name,FileRetention,JobRetention "
-"FROM Client ORDER BY ClientId");
+ if (full) {
+ Mmsg(&mdb->cmd, "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,"
+ "FileRetention,JobRetention "
+ "FROM Client ORDER BY ClientId");
+ } else {
+ Mmsg(&mdb->cmd, "SELECT ClientId,Name,FileRetention,JobRetention "
+ "FROM Client ORDER BY ClientId");
+ }
db_lock(mdb);
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, full);
sql_free_result(mdb);
db_unlock(mdb);
void
-db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
+ DB_LIST_HANDLER *sendit, void *ctx, int full)
{
- Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,\
-VolBytes,LastWritten,VolRetention,Recycle,Slot \
-FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ if (full) {
+ Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
+ "MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
+ "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
+ "VolCapacityBytes,VolStatus,Recycle,VolRetention,"
+ "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes "
+ "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ } else {
+ Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,"
+ "VolBytes,LastWritten,VolRetention,Recycle,Slot "
+ "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ }
db_lock(mdb);
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, full);
sql_free_result(mdb);
db_unlock(mdb);
}
-void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx)
+void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId,
+ DB_LIST_HANDLER *sendit, void *ctx, int full)
{
- if (JobId > 0) { /* do by JobId */
- Mmsg(&mdb->cmd, "SELECT JobId, Media.VolumeName, FirstIndex, LastIndex \
-FROM JobMedia, Media WHERE Media.MediaId=JobMedia.MediaId and JobMedia.JobId=%u",
- JobId);
+ if (full) {
+ if (JobId > 0) { /* do by JobId */
+ Mmsg(&mdb->cmd, "SELECT JobMediaId,JobId,MediaId,Media.VolumeName,"
+ "FirstIndex,LastIndex,StartFile,EndFile,StartBlock,EndBlock "
+ "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId "
+ "AND JobMedia.JobId=%u", JobId);
+ } else {
+ Mmsg(&mdb->cmd, "SELECT JobMediaId,JobId,MediaId,Media.VolumeName,"
+ "FirstIndex,LastIndex,StartFile,EndFile,StartBlock,EndBlock "
+ "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId");
+ }
+
} else {
- Mmsg(&mdb->cmd, "SELECT JobId, Media.VolumeName, FirstIndex, LastIndex \
-FROM JobMedia, Media WHERE Media.MediaId=JobMedia.MediaId");
+ if (JobId > 0) { /* do by JobId */
+ Mmsg(&mdb->cmd, "SELECT JobId,Media.VolumeName,FirstIndex,LastIndex"
+ "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId "
+ "AND JobMedia.JobId=%u", JobId);
+ } else {
+ Mmsg(&mdb->cmd, "SELECT JobId,Media.VolumeName,FirstIndex,LastIndex "
+ "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId");
+ }
}
-
db_lock(mdb);
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
db_unlock(mdb);
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, full);
sql_free_result(mdb);
db_unlock(mdb);
* only the job with the specified id.
*/
void
-db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
+ void *ctx, int full)
{
- if (jr->JobId == 0 && jr->Job[0] == 0) {
- Mmsg(&mdb->cmd,
-"SELECT JobId,Name,StartTime,Type,Level,JobFiles,JobBytes,JobStatus "
-"FROM Job ORDER BY JobId");
- } else { /* single record */
- Mmsg(&mdb->cmd, "SELECT JobId,Name,StartTime,Type,Level,\
-JobFiles,JobBytes,JobStatus FROM Job WHERE Job.JobId=%u", jr->JobId);
+ if (full) {
+ if (jr->JobId == 0 && jr->Job[0] == 0) {
+ Mmsg(&mdb->cmd,
+ "SELECT JobId,Job,Job.Name,PurgedFiles,Type,Level,"
+ "Job.ClientId,Client.Name,JobStatus,SchedTime,"
+ "StartTime,EndTime,JobTDate,"
+ "VolSessionId,VolSessionTime,JobFiles,JobErrors,"
+ "JobMissingFiles,Job.PoolId,Pool.Name,Job.FileSetId,FileSet.FileSet "
+ "FROM Job,Client,Pool,FileSet WHERE "
+ "Client.ClientId=Job.ClientId AND Pool.PoolId=Job.PoolId "
+ "AND FileSet.FileSetId=Job.FileSetId ORDER BY JobId");
+ } else { /* single record */
+ Mmsg(&mdb->cmd,
+ "SELECT JobId,Job,Job.Name,PurgedFiles,Type,Level,"
+ "Job.ClientId,Client.Name,JobStatus,SchedTime,"
+ "StartTime,EndTime,JobTDate,"
+ "VolSessionId,VolSessionTime,JobFiles,JobErrors,"
+ "JobMissingFiles,Job.PoolId,Pool.Name,Job.FileSetId,FileSet.FileSet "
+ "FROM Job,Client,Pool,FileSet WHERE Job.JobId=%u AND "
+ "Client.ClientId=Job.ClientId AND Pool.PoolId=Job.PoolId "
+ "AND FileSet.FileSetId=Job.FileSetId", jr->JobId);
+ }
+ } else {
+ if (jr->JobId == 0 && jr->Job[0] == 0) {
+ Mmsg(&mdb->cmd,
+ "SELECT JobId,Name,StartTime,Type,Level,JobFiles,JobBytes,JobStatus "
+ "FROM Job ORDER BY JobId");
+ } else { /* single record */
+ Mmsg(&mdb->cmd, "SELECT JobId,Name,StartTime,Type,Level,"
+ "JobFiles,JobBytes,JobStatus FROM Job WHERE JobId=%u", jr->JobId);
+ }
}
-
db_lock(mdb);
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
db_unlock(mdb);
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, full);
sql_free_result(mdb);
db_unlock(mdb);
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, 0);
sql_free_result(mdb);
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, 0);
sql_free_result(mdb);
db_unlock(mdb);
return;
}
- list_result(mdb, sendit, ctx);
+ list_result(mdb, sendit, ctx, 0);
sql_free_result(mdb);
db_unlock(mdb);
send(ctx, "\n");
}
+/*
+ * If full_list is set, we list vertically, otherwise, we
+ * list on one line horizontally.
+ */
void
-list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx)
+list_result(B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, int full_list)
{
SQL_FIELD *field;
SQL_ROW row;
- unsigned int i, col_len;
+ unsigned int i, col_len, max_len = 0;
char buf[2000], ewc[30];
if (mdb->result == NULL || mdb->nrow == 0) {
sql_field_seek(mdb, 0);
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
- if (IS_NUM(field->type) && field->max_length > 0) { /* fixup for commas */
- field->max_length += (field->max_length - 1) / 3;
- }
col_len = strlen(field->name);
- if (col_len < field->max_length)
- col_len = field->max_length;
- if (col_len < 4 && !IS_NOT_NULL(field->flags))
- col_len = 4; /* 4 = length of the word "NULL" */
- field->max_length = col_len; /* reset column info */
+ if (full_list) {
+ if (col_len > max_len) {
+ max_len = col_len;
+ }
+ } else {
+ if (IS_NUM(field->type) && field->max_length > 0) { /* fixup for commas */
+ field->max_length += (field->max_length - 1) / 3;
+ }
+ if (col_len < field->max_length) {
+ col_len = field->max_length;
+ }
+ if (col_len < 4 && !IS_NOT_NULL(field->flags)) {
+ col_len = 4; /* 4 = length of the word "NULL" */
+ }
+ field->max_length = col_len; /* reset column info */
+ }
+ }
+
+ if (full_list) {
+ goto horizontal_list;
}
list_dashes(mdb, send, ctx);
sql_field_seek(mdb, 0);
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
- sprintf(buf, " %-*s |", field->max_length, field->name);
+ bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, field->name);
send(ctx, buf);
}
send(ctx, "\n");
for (i = 0; i < sql_num_fields(mdb); i++) {
field = sql_fetch_field(mdb);
if (row[i] == NULL) {
- sprintf(buf, " %-*s |", field->max_length, "NULL");
+ bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, "NULL");
} else if (IS_NUM(field->type)) {
- sprintf(buf, " %*s |", field->max_length,
+ bsnprintf(buf, sizeof(buf), " %*s |", (int)field->max_length,
add_commas(row[i], ewc));
} else {
- sprintf(buf, " %-*s |", field->max_length, row[i]);
+ bsnprintf(buf, sizeof(buf), " %-*s |", (int)field->max_length, row[i]);
}
send(ctx, buf);
}
send(ctx, "\n");
}
list_dashes(mdb, send, ctx);
+ return;
+
+horizontal_list:
+
+ while ((row = sql_fetch_row(mdb)) != NULL) {
+ sql_field_seek(mdb, 0);
+ for (i = 0; i < sql_num_fields(mdb); i++) {
+ field = sql_fetch_field(mdb);
+ if (row[i] == NULL) {
+ bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name, "NULL");
+ } else if (IS_NUM(field->type)) {
+ bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name,
+ add_commas(row[i], ewc));
+ } else {
+ bsnprintf(buf, sizeof(buf), " %*s: %s\n", max_len, field->name, row[i]);
+ }
+ send(ctx, buf);
+ }
+ send(ctx, "\n");
+ }
+ return;
}
strcpy(pr.Name, jcr->pool->hdr.name);
while (!db_get_pool_record(jcr, jcr->db, &pr)) { /* get by Name */
/* Try to create the pool */
- if (create_pool(jcr, jcr->db, jcr->pool, 0) < 0) {
+ if (create_pool(jcr, jcr->db, jcr->pool, 1) < 0) {
Jmsg(jcr, M_FATAL, 0, _("Pool %s not in database. %s"), pr.Name,
db_strerror(jcr->db));
goto bail_out;
* record if it is not already created.
*/
if (job->pool) {
- create_pool(NULL, db, job->pool, 1);
+ create_pool(NULL, db, job->pool, 0); /* update request */
}
db_close_database(NULL, db);
}
/* fd_cmds.c */
extern int connect_to_file_daemon(JCR *jcr, int retry_interval,
- int max_retry_time, int verbose);
+ int max_retry_time, int verbose);
extern int send_include_list(JCR *jcr);
extern int send_exclude_list(JCR *jcr);
extern int get_attributes_and_put_in_catalog(JCR *jcr);
extern int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId);
extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname,
- char *link, char *attr, int stream);
+ char *link, char *attr, int stream);
/* job.c */
extern void set_jcr_defaults(JCR *jcr, JOB *job);
/* msgchan.c */
extern int connect_to_storage_daemon(JCR *jcr, int retry_interval,
- int max_retry_time, int verbose);
+ int max_retry_time, int verbose);
extern int start_storage_daemon_job(JCR *jcr);
extern int start_storage_daemon_message_thread(JCR *jcr);
extern int32_t bget_msg(BSOCK *bs, int type);
int qmessagescmd(UAContext *ua, char *cmd);
int open_db(UAContext *ua);
void close_db(UAContext *ua);
-int create_pool(JCR *jcr, B_DB *db, POOL *pool, int update);
+int create_pool(JCR *jcr, B_DB *db, POOL *pool, int create);
void set_pool_dbr_defaults_in_media_dbr(MEDIA_DBR *mr, POOL_DBR *pr);
/* ua_input.c */
void bsendmsg(void *sock, char *fmt, ...);
/* ua_select.c */
-STORE *select_storage_resource(UAContext *ua);
-JOB *select_job_resource(UAContext *ua);
-JOB *select_restore_job_resource(UAContext *ua);
-CLIENT *select_client_resource(UAContext *ua);
+STORE *select_storage_resource(UAContext *ua);
+JOB *select_job_resource(UAContext *ua);
+JOB *select_restore_job_resource(UAContext *ua);
+CLIENT *select_client_resource(UAContext *ua);
FILESET *select_fileset_resource(UAContext *ua);
-int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr);
-int select_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 *msg, char *prompt, int max_prompt);
-CAT *get_catalog_resource(UAContext *ua);
+int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr);
+int select_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 *msg, char *prompt, int max_prompt);
+CAT *get_catalog_resource(UAContext *ua);
STORE *get_storage_resource(UAContext *ua, char *cmd);
-int get_media_type(UAContext *ua, char *MediaType, int max_media);
-int get_pool_dbr(UAContext *ua, POOL_DBR *pr);
-int get_client_dbr(UAContext *ua, CLIENT_DBR *cr);
+int get_media_type(UAContext *ua, char *MediaType, int max_media);
+int get_pool_dbr(UAContext *ua, POOL_DBR *pr);
+int get_client_dbr(UAContext *ua, CLIENT_DBR *cr);
POOL *get_pool_resource(UAContext *ua);
POOL *select_pool_resource(UAContext *ua);
CLIENT *get_client_resource(UAContext *ua);
-int get_job_dbr(UAContext *ua, JOB_DBR *jr);
+int get_job_dbr(UAContext *ua, JOB_DBR *jr);
int find_arg_keyword(UAContext *ua, char **list);
int do_keyword_prompt(UAContext *ua, char *msg, char **list);
/*
* Add Volumes to an existing Pool
- *
*/
static int addcmd(UAContext *ua, char *cmd)
{
* 1 record created
*/
-int create_pool(JCR *jcr, B_DB *db, POOL *pool, int update)
+int create_pool(JCR *jcr, B_DB *db, POOL *pool, int create)
{
POOL_DBR pr;
if (db_get_pool_record(jcr, db, &pr)) {
/* Pool Exists */
- if (update) {
- set_pooldbr_from_poolres(&pr, pool, 1);
+ if (!create) { /* update request */
+ set_pooldbr_from_poolres(&pr, pool, 0);
db_update_pool_record(jcr, db, &pr);
}
return 0; /* exists */
return 1;
}
- switch (create_pool(ua->jcr, ua->db, pool, 0)) {
+ switch (create_pool(ua->jcr, ua->db, pool, 1)) {
case 0:
bsendmsg(ua, _("Error: Pool %s already exists.\n\
Use update to change it.\n"), pool->hdr.name);
}
query = get_pool_memory(PM_MESSAGE);
Mmsg(&query, list_pool, pr.PoolId);
- db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1);
+ db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1, 0);
free_pool_memory(query);
bsendmsg(ua, _("Pool DB record updated from resource.\n"));
return 1;
for (i=1; i<ua->argc; i++) {
/* List JOBS */
if (strcasecmp(ua->argk[i], _("jobs")) == 0) {
- db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua);
+ db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua, llist);
/* List JOBTOTALS */
} else if (strcasecmp(ua->argk[i], _("jobtotals")) == 0) {
jobid = atoi(ua->argv[i]);
if (jobid > 0) {
jr.JobId = jobid;
- db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua);
+ db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua, llist);
}
}
} else if (strcasecmp(ua->argk[i], _("job")) == 0 && ua->argv[i]) {
bstrncpy(jr.Job, ua->argv[i], MAX_NAME_LENGTH);
jr.JobId = 0;
- db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua);
+ db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua, llist);
/* List FILES */
} else if (strcasecmp(ua->argk[i], _("files")) == 0) {
} else {
continue;
}
- db_list_jobmedia_records(ua->jcr, ua->db, jobid, prtit, ua);
+ db_list_jobmedia_records(ua->jcr, ua->db, jobid, prtit, ua, llist);
done = TRUE;
}
if (!done) {
/* List for all jobs (jobid=0) */
- db_list_jobmedia_records(ua->jcr, ua->db, 0, prtit, ua);
+ db_list_jobmedia_records(ua->jcr, ua->db, 0, prtit, ua, llist);
}
/* List POOLS */
} else if (strcasecmp(ua->argk[i], _("pools")) == 0) {
- db_list_pool_records(ua->jcr, ua->db, prtit, ua);
+ db_list_pool_records(ua->jcr, ua->db, prtit, ua, llist);
} else if (strcasecmp(ua->argk[i], _("clients")) == 0) {
- db_list_client_records(ua->jcr, ua->db, prtit, ua);
+ db_list_client_records(ua->jcr, ua->db, prtit, ua, llist);
/* List MEDIA or VOLUMES */
return 1;
}
mr.PoolId = pr.PoolId;
- db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua);
+ db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua, llist);
return 1;
}
}
bsendmsg(ua, _("Pool: %s\n"), pr.Name);
}
mr.PoolId = ids[i];
- db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua);
+ db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua, llist);
}
free(ids);
return 1;
case -1: /* error */
return 0;
case 0: /* list last 20 Jobs run */
- db_list_sql_query(ua->jcr, ua->db, uar_list_jobs, prtit, ua, 1);
+ db_list_sql_query(ua->jcr, ua->db, uar_list_jobs, prtit, ua, 1, 0);
done = 0;
break;
case 1: /* list where a file is saved */
query = get_pool_memory(PM_MESSAGE);
Mmsg(&query, uar_file, fname);
free(fname);
- db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1);
+ db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1, 0);
free_pool_memory(query);
done = 0;
break;
if (!get_cmd(ua, _("Enter SQL list command: "))) {
return 0;
}
- db_list_sql_query(ua->jcr, ua->db, ua->cmd, prtit, ua, 1);
+ db_list_sql_query(ua->jcr, ua->db, ua->cmd, prtit, ua, 1, 0);
done = 0;
break;
case 4: /* Select the most recent backups */
bsendmsg(ua, "%s\n", db_strerror(ua->db));
}
free_pool_memory(query);
- db_list_sql_query(ua->jcr, ua->db, uar_list_temp, prtit, ua, 1);
+ db_list_sql_query(ua->jcr, ua->db, uar_list_temp, prtit, ua, 1, 0);
if (!db_sql_query(ua->db, uar_sel_jobid_temp, jobid_handler, (void *)ji)) {
bsendmsg(ua, "%s\n", db_strerror(ua->db));
bstrncpy(mr->VolumeName, ua->argv[i], sizeof(mr->VolumeName));
}
if (mr->VolumeName[0] == 0) {
- db_list_media_records(ua->jcr, ua->db, mr, prtit, ua);
+ db_list_media_records(ua->jcr, ua->db, mr, prtit, ua, 0);
if (!get_cmd(ua, _("Enter MediaId or Volume name: "))) {
return 0;
}
*/
int select_job_dbr(UAContext *ua, JOB_DBR *jr)
{
- db_list_job_records(ua->jcr, ua->db, jr, prtit, ua);
+ db_list_job_records(ua->jcr, ua->db, jr, prtit, ua, 0);
if (!get_cmd(ua, _("Enter the JobId to select: "))) {
return 0;
}
/* */
#define VERSION "1.30"
#define VSTRING "1"
-#define BDATE "02 April 2003"
-#define LSMDATE "02Apr03"
+#define BDATE "03 April 2003"
+#define LSMDATE "03Apr03"
/* Debug flags */
#define DEBUG 1