git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@200
91ce42f0-d328-0410-95d8-
f526ca767f89
13 files changed:
- @$(RMF) startmysql stopmysql bacula fd startit stopit btraceback
- @$(RMF) console gconsole
-
# clean for distribution
distclean: clean
# clean for distribution
distclean: clean
+ @$(RMF) startmysql stopmysql bacula fd startit stopit btraceback
+ @$(RMF) console gconsole
# ------------------------------------------------------------------------
# ------------------------------------------------------------------------
int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr);
/* find.c */
int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr);
/* find.c */
-int db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, char *stime);
+int db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime);
int db_find_last_jobid(B_DB *mdb, JOB_DBR *jr);
int db_find_next_volume(B_DB *mdb, int index, MEDIA_DBR *mr);
int db_find_last_jobid(B_DB *mdb, JOB_DBR *jr);
int db_find_next_volume(B_DB *mdb, int index, MEDIA_DBR *mr);
int db_update_job_end_record(B_DB *db, JOB_DBR *jr);
int db_update_pool_record(B_DB *db, POOL_DBR *pr);
int db_update_media_record(B_DB *db, MEDIA_DBR *mr);
int db_update_job_end_record(B_DB *db, JOB_DBR *jr);
int db_update_pool_record(B_DB *db, POOL_DBR *pr);
int db_update_media_record(B_DB *db, MEDIA_DBR *mr);
-int db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5);
+int db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5);
int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId);
#endif /* __SQL_PROTOS_H */
int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId);
#endif /* __SQL_PROTOS_H */
int stat;
char ed1[30], ed2[30];
int stat;
char ed1[30], ed2[30];
+ Dmsg0(200, "In create pool\n");
db_lock(mdb);
Mmsg(&mdb->cmd, "SELECT PoolId,Name FROM Pool WHERE Name='%s'", pr->Name);
db_lock(mdb);
Mmsg(&mdb->cmd, "SELECT PoolId,Name FROM Pool WHERE Name='%s'", pr->Name);
- Dmsg1(20, "selectpool: %s\n", mdb->cmd);
+ Dmsg1(200, "selectpool: %s\n", mdb->cmd);
if (QUERY_DB(mdb, mdb->cmd)) {
if (QUERY_DB(mdb, mdb->cmd)) {
edit_uint64(pr->VolUseDuration, ed2),
pr->MaxVolJobs,
pr->PoolType, pr->LabelFormat);
edit_uint64(pr->VolUseDuration, ed2),
pr->MaxVolJobs,
pr->PoolType, pr->LabelFormat);
- Dmsg1(500, "Create Pool: %s\n", mdb->cmd);
+ Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
if (!INSERT_DB(mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
if (!INSERT_DB(mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"),
mdb->cmd, sql_strerror(mdb));
* 1 on success, jr is unchanged, but stime is set
*/
int
* 1 on success, jr is unchanged, but stime is set
*/
int
-db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, char *stime)
+db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime)
{
SQL_ROW row;
int JobId;
{
SQL_ROW row;
int JobId;
- strcpy(stime, "0000-00-00 00:00:00"); /* default */
+ pm_strcpy(stime, "0000-00-00 00:00:00"); /* default */
db_lock(mdb);
/* If no Id given, we must find corresponding job */
if (jr->JobId == 0) {
db_lock(mdb);
/* If no Id given, we must find corresponding job */
if (jr->JobId == 0) {
}
if ((row = sql_fetch_row(mdb)) == NULL) {
}
if ((row = sql_fetch_row(mdb)) == NULL) {
- *stime = 0; /* set EOS */
+ pm_strcpy(stime, ""); /* set EOS */
Mmsg2(&mdb->errmsg, _("No Job found for JobId=%d: %s\n"), JobId, sql_strerror(mdb));
sql_free_result(mdb);
db_unlock(mdb);
return 0;
}
Dmsg1(100, "Got start time: %s\n", row[0]);
Mmsg2(&mdb->errmsg, _("No Job found for JobId=%d: %s\n"), JobId, sql_strerror(mdb));
sql_free_result(mdb);
db_unlock(mdb);
return 0;
}
Dmsg1(100, "Got start time: %s\n", row[0]);
+ pm_strcpy(stime, row[0]);
db_lock(mdb);
Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,\
db_lock(mdb);
Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,\
-VolBytes,VolMounts,VolErrors,VolWrites,VolMaxBytes,VolCapacityBytes,Slot,\
+VolBytes,VolMounts,VolErrors,VolWrites,VolMaxBytes,VolCapacityBytes,\
+VolRetention,VolUseDuration,MaxVolJobs,Recycle,Slot,\
FirstWritten FROM Media WHERE PoolId=%d AND MediaType='%s' AND VolStatus='%s' \
ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus);
FirstWritten FROM Media WHERE PoolId=%d AND MediaType='%s' AND VolStatus='%s' \
ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus);
/* Return fields in Media Record */
mr->MediaId = atoi(row[0]);
/* Return fields in Media Record */
mr->MediaId = atoi(row[0]);
- strcpy(mr->VolumeName, row[1]);
+ bstrncpy(mr->VolumeName, row[1], sizeof(mr->VolumeName));
mr->VolJobs = atoi(row[2]);
mr->VolFiles = atoi(row[3]);
mr->VolBlocks = atoi(row[4]);
mr->VolJobs = atoi(row[2]);
mr->VolFiles = atoi(row[3]);
mr->VolBlocks = atoi(row[4]);
mr->VolWrites = atoi(row[8]);
mr->VolMaxBytes = (uint64_t)strtod(row[9], NULL);
mr->VolCapacityBytes = (uint64_t)strtod(row[10], NULL);
mr->VolWrites = atoi(row[8]);
mr->VolMaxBytes = (uint64_t)strtod(row[9], NULL);
mr->VolCapacityBytes = (uint64_t)strtod(row[10], NULL);
- mr->Slot = atoi(row[11]);
- strcpy(mr->cFirstWritten, row[12]);
+ mr->VolRetention = (utime_t)strtod(row[11], NULL);
+ mr->VolUseDuration = (utime_t)strtod(row[12], NULL);
+ mr->MaxVolJobs = atoi(row[13]);
+ mr->Recycle = atoi(row[14]);
+ mr->Slot = atoi(row[15]);
+ bstrncpy(mr->cFirstWritten, row[16]!=NULL?row[16]:"", sizeof(mr->cFirstWritten));
jr->VolSessionId = atol(row[0]);
jr->VolSessionTime = atol(row[1]);
jr->PoolId = atoi(row[2]);
jr->VolSessionId = atol(row[0]);
jr->VolSessionTime = atol(row[1]);
jr->PoolId = atoi(row[2]);
- strcpy(jr->cStartTime, row[3]);
- strcpy(jr->cEndTime, row[4]);
+ bstrncpy(jr->cStartTime, row[3]!=NULL?row[3]:"", sizeof(jr->cStartTime));
+ bstrncpy(jr->cEndTime, row[4]!=NULL?row[4]:"", sizeof(jr->cEndTime));
jr->JobFiles = atol(row[5]);
jr->JobBytes = (uint64_t)strtod(row[6], NULL);
jr->JobTDate = (utime_t)strtod(row[7], NULL);
jr->JobFiles = atol(row[5]);
jr->JobBytes = (uint64_t)strtod(row[6], NULL);
jr->JobTDate = (utime_t)strtod(row[7], NULL);
- strcpy(jr->Job, row[8]);
+ bstrncpy(jr->Job, row[8]!=NULL?row[8]:"", sizeof(jr->Job));
jr->JobStatus = (int)*row[9];
jr->Type = (int)*row[10];
jr->Level = (int)*row[11];
jr->JobStatus = (int)*row[9];
jr->Type = (int)*row[10];
jr->Level = (int)*row[11];
db_lock(mdb);
if (pdbr->PoolId != 0) { /* find by id */
Mmsg(&mdb->cmd,
db_lock(mdb);
if (pdbr->PoolId != 0) { /* find by id */
Mmsg(&mdb->cmd,
-"SELECT PoolId, Name, NumVols, MaxVols, UseOnce, UseCatalog, AcceptAnyVolume, \
-AutoPrune, Recycle, VolRetention, \
-PoolType, LabelFormat FROM Pool WHERE Pool.PoolId=%d", pdbr->PoolId);
+"SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,\
+AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,\
+PoolType,LabelFormat FROM Pool WHERE Pool.PoolId=%d", pdbr->PoolId);
} else { /* find by name */
Mmsg(&mdb->cmd,
"SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,\
} else { /* find by name */
Mmsg(&mdb->cmd,
"SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,\
Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
} else {
pdbr->PoolId = atoi(row[0]);
Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
} else {
pdbr->PoolId = atoi(row[0]);
- strcpy(pdbr->Name, row[1]);
+ bstrncpy(pdbr->Name, row[1]!=NULL?row[1]:"", sizeof(pdbr->Name));
pdbr->NumVols = atoi(row[2]);
pdbr->MaxVols = atoi(row[3]);
pdbr->UseOnce = atoi(row[4]);
pdbr->NumVols = atoi(row[2]);
pdbr->MaxVols = atoi(row[3]);
pdbr->UseOnce = atoi(row[4]);
pdbr->VolRetention = (utime_t)strtod(row[9], NULL);
pdbr->VolUseDuration = (utime_t)strtod(row[10], NULL);
pdbr->MaxVolJobs = atoi(row[11]);
pdbr->VolRetention = (utime_t)strtod(row[9], NULL);
pdbr->VolUseDuration = (utime_t)strtod(row[10], NULL);
pdbr->MaxVolJobs = atoi(row[11]);
- strcpy(pdbr->PoolType, row[12]);
- if (row[13]) {
- strcpy(pdbr->LabelFormat, row[13]);
- } else {
- pdbr->LabelFormat[0] = 0;
- }
+ bstrncpy(pdbr->PoolType, row[12]!=NULL?row[12]:"", sizeof(pdbr->PoolType));
+ bstrncpy(pdbr->LabelFormat, row[13]!=NULL?row[13]:"", sizeof(pdbr->LabelFormat));
Mmsg1(&mdb->errmsg, _("Error: FileSet record \"%s\" not found\n"), fsr->FileSet);
} else {
fsr->FileSetId = atoi(row[0]);
Mmsg1(&mdb->errmsg, _("Error: FileSet record \"%s\" not found\n"), fsr->FileSet);
} else {
fsr->FileSetId = atoi(row[0]);
- strcpy(fsr->FileSet, row[1]);
- strcpy(fsr->MD5, row[2]);
+ bstrncpy(fsr->FileSet, row[1]!=NULL?row[1]:"", sizeof(fsr->FileSet));
+ bstrncpy(fsr->MD5, row[2]!=NULL?row[2]:"", sizeof(fsr->MD5));
stat = fsr->FileSetId;
}
sql_free_result(mdb);
stat = fsr->FileSetId;
}
sql_free_result(mdb);
} else {
/* return values */
mr->MediaId = atoi(row[0]);
} else {
/* return values */
mr->MediaId = atoi(row[0]);
- strcpy(mr->VolumeName, row[1]);
+ bstrncpy(mr->VolumeName, row[1]!=NULL?row[1]:"", sizeof(mr->VolumeName));
mr->VolJobs = atoi(row[2]);
mr->VolFiles = atoi(row[3]);
mr->VolBlocks = atoi(row[4]);
mr->VolJobs = atoi(row[2]);
mr->VolFiles = atoi(row[3]);
mr->VolBlocks = atoi(row[4]);
mr->VolWrites = atoi(row[8]);
mr->VolMaxBytes = (uint64_t)strtod(row[9], NULL);
mr->VolCapacityBytes = (uint64_t)strtod(row[10], NULL);
mr->VolWrites = atoi(row[8]);
mr->VolMaxBytes = (uint64_t)strtod(row[9], NULL);
mr->VolCapacityBytes = (uint64_t)strtod(row[10], NULL);
- strcpy(mr->MediaType, row[11]);
- strcpy(mr->VolStatus, row[12]);
+ bstrncpy(mr->MediaType, row[11]!=NULL?row[11]:"", sizeof(mr->MediaType));
+ bstrncpy(mr->VolStatus, row[12]!=NULL?row[12]:"", sizeof(mr->VolStatus));
mr->PoolId = atoi(row[13]);
mr->VolRetention = (utime_t)strtod(row[14], NULL);
mr->VolUseDuration = (utime_t)strtod(row[15], NULL);
mr->MaxVolJobs = atoi(row[16]);
mr->Recycle = atoi(row[17]);
mr->Slot = atoi(row[18]);
mr->PoolId = atoi(row[13]);
mr->VolRetention = (utime_t)strtod(row[14], NULL);
mr->VolUseDuration = (utime_t)strtod(row[15], NULL);
mr->MaxVolJobs = atoi(row[16]);
mr->Recycle = atoi(row[17]);
mr->Slot = atoi(row[18]);
- strcpy(mr->cFirstWritten, row[19]);
+ bstrncpy(mr->cFirstWritten, row[19]!=NULL?row[19]:"", sizeof(mr->cFirstWritten));
stat = mr->MediaId;
}
} else {
stat = mr->MediaId;
}
} else {
case L_INCREMENTAL:
/* Look up start time of last job */
jcr->jr.JobId = 0;
case L_INCREMENTAL:
/* Look up start time of last job */
jcr->jr.JobId = 0;
- if (!db_find_job_start_time(jcr->db, &jcr->jr, jcr->stime)) {
+ if (!db_find_job_start_time(jcr->db, &jcr->jr, &jcr->stime)) {
Jmsg(jcr, M_INFO, 0, _("Last FULL backup time not found. Doing FULL backup.\n"));
jcr->JobLevel = jcr->jr.Level = L_FULL;
} else {
strcpy(since, ", since=");
Jmsg(jcr, M_INFO, 0, _("Last FULL backup time not found. Doing FULL backup.\n"));
jcr->JobLevel = jcr->jr.Level = L_FULL;
} else {
strcpy(since, ", since=");
- strcat(since, jcr->stime);
+ bstrncat(since, jcr->stime, sizeof(since));
}
Dmsg1(115, "Last start time = %s\n", jcr->stime);
break;
}
Dmsg1(115, "Last start time = %s\n", jcr->stime);
break;
JOBMEDIA_DBR jm;
char Job[MAX_NAME_LENGTH];
int index, ok, relabel, writing, retry = 0;
JOBMEDIA_DBR jm;
char Job[MAX_NAME_LENGTH];
int index, ok, relabel, writing, retry = 0;
memset(&mr, 0, sizeof(mr));
memset(&jm, 0, sizeof(jm));
memset(&mr, 0, sizeof(mr));
memset(&jm, 0, sizeof(jm));
if (sscanf(bs->msg, Find_media, &Job, &index) == 2) {
mr.PoolId = jcr->PoolId;
strcpy(mr.MediaType, jcr->store->media_type);
if (sscanf(bs->msg, Find_media, &Job, &index) == 2) {
mr.PoolId = jcr->PoolId;
strcpy(mr.MediaType, jcr->store->media_type);
- Dmsg3(120, "CatReq FindMedia: Id=%d, MediaType=%s, Status=%s\n",
- mr.PoolId, mr.MediaType, mr.VolStatus);
+ Dmsg2(120, "CatReq FindMedia: Id=%d, MediaType=%s\n",
+ mr.PoolId, mr.MediaType);
/*
* Find the Next Volume for Append
*/
next_volume:
strcpy(mr.VolStatus, "Append"); /* want only appendable volumes */
ok = db_find_next_volume(jcr->db, index, &mr);
/*
* Find the Next Volume for Append
*/
next_volume:
strcpy(mr.VolStatus, "Append"); /* want only appendable volumes */
ok = db_find_next_volume(jcr->db, index, &mr);
+ Dmsg1(200, "catreq after find_next_vol ok=%d\n", ok);
if (!ok) {
/* Well, try finding recycled tapes */
ok = find_recycled_volume(jcr, &mr);
if (!ok) {
/* Well, try finding recycled tapes */
ok = find_recycled_volume(jcr, &mr);
*/
if (ok) {
jcr->MediaId = mr.MediaId;
*/
if (ok) {
jcr->MediaId = mr.MediaId;
- strcpy(jcr->VolumeName, mr.VolumeName);
+ pm_strcpy(&jcr->VolumeName, mr.VolumeName);
bash_spaces(mr.VolumeName);
bnet_fsend(bs, OK_media, mr.VolumeName, mr.VolJobs,
mr.VolFiles, mr.VolBlocks, mr.VolBytes, mr.VolMounts, mr.VolErrors,
bash_spaces(mr.VolumeName);
bnet_fsend(bs, OK_media, mr.VolumeName, mr.VolJobs,
mr.VolFiles, mr.VolBlocks, mr.VolBytes, mr.VolMounts, mr.VolErrors,
- omsg = (char *) get_memory(bs->msglen+1);
- strcpy(omsg, bs->msg);
+ omsg = get_memory(bs->msglen+1);
+ pm_strcpy(&omsg, bs->msg);
bnet_fsend(bs, "1990 Invalid Catalog Request: %s", omsg);
free_memory(omsg);
}
Dmsg1(120, ">CatReq response: %s", bs->msg);
bnet_fsend(bs, "1990 Invalid Catalog Request: %s", omsg);
free_memory(omsg);
}
Dmsg1(120, ">CatReq response: %s", bs->msg);
+ Dmsg1(200, "Leave catreq jcr 0x%x\n", jcr);
}
db_close_database(db);
}
}
db_close_database(db);
}
} else {
if (job->client) {
Jmsg(NULL, M_FATAL, 0, _("No Catalog resource defined for client %s\n"),
} else {
if (job->client) {
Jmsg(NULL, M_FATAL, 0, _("No Catalog resource defined for client %s\n"),
Emsg1(M_ERROR, 0, _("Job not found: %s\n"), bs->msg);
continue;
}
Emsg1(M_ERROR, 0, _("Job not found: %s\n"), bs->msg);
continue;
}
+ Dmsg1(200, "Getmsg got jcr 0x%x\n", jcr);
/* Skip past "Jmsg Job=nnn" */
if (!(msg=find_msg_start(bs->msg))) {
/* Skip past "Jmsg Job=nnn" */
if (!(msg=find_msg_start(bs->msg))) {
* CatReq Job=nn Catalog-Request-Message
*/
if (bs->msg[0] == 'C') { /* Catalog request */
* CatReq Job=nn Catalog-Request-Message
*/
if (bs->msg[0] == 'C') { /* Catalog request */
- Dmsg1(120, "Catalog req: %s", bs->msg);
+ Dmsg2(120, "Catalog req jcr 0x%x: %s", jcr, bs->msg);
catalog_request(jcr, bs, msg);
catalog_request(jcr, bs, msg);
+ Dmsg1(200, "Calling freejcr 0x%x\n", jcr);
free_jcr(jcr);
continue;
}
if (bs->msg[0] == 'U') { /* Catalog update */
free_jcr(jcr);
continue;
}
if (bs->msg[0] == 'U') { /* Catalog update */
+ Dmsg2(120, "Catalog upd jcr 0x%x: %s", jcr, bs->msg);
catalog_update(jcr, bs, msg);
catalog_update(jcr, bs, msg);
+ Dmsg1(200, "Calling freejcr 0x%x\n", jcr);
free_jcr(jcr);
continue;
}
free_jcr(jcr);
continue;
}
/* fd_cmds.c */
extern int connect_to_file_daemon(JCR *jcr, int retry_interval,
/* 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,
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);
-extern void free_jcr(JCR *jcr);
extern void set_jcr_defaults(JCR *jcr, JOB *job);
extern void create_unique_job_name(JCR *jcr, char *base_name);
extern void update_job_end_record(JCR *jcr);
extern void set_jcr_defaults(JCR *jcr, JOB *job);
extern void create_unique_job_name(JCR *jcr, char *base_name);
extern void update_job_end_record(JCR *jcr);
/* msgchan.c */
extern int connect_to_storage_daemon(JCR *jcr, int retry_interval,
/* 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);
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);
/* The following routines are found in lib/jcr.c */
extern JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr);
/* The following routines are found in lib/jcr.c */
extern JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr);
-extern void free_jcr(JCR *jcr);
extern void free_locked_jcr(JCR *jcr);
extern JCR *get_jcr_by_id(uint32_t JobId);
extern JCR *get_jcr_by_session(uint32_t SessionId, uint32_t SessionTime);
extern void free_locked_jcr(JCR *jcr);
extern JCR *get_jcr_by_id(uint32_t JobId);
extern JCR *get_jcr_by_session(uint32_t SessionId, uint32_t SessionTime);
extern void lock_jcr_chain();
extern void unlock_jcr_chain();
extern void lock_jcr_chain();
extern void unlock_jcr_chain();
+#ifdef DEBUG
+extern void b_free_jcr(char *file, int line, JCR *jcr);
+#define free_jcr(jcr) b_free_jcr(__FILE__, __LINE__, (jcr))
+#else
+extern void free_jcr(JCR *jcr);
+#endif
+
/*
* Global routine to free a jcr
*/
/*
* Global routine to free a jcr
*/
+#ifdef DEBUG
+void b_free_jcr(char *file, int line, JCR *jcr)
+{
+ Dmsg3(200, "Enter free_jcr 0x%x from %s:%d\n", jcr, file, line);
+
+#else
+
void free_jcr(JCR *jcr)
{
void free_jcr(JCR *jcr)
{
- Dmsg0(200, "Enter free_jcr\n");
+ Dmsg1(200, "Enter free_jcr 0x%x\n", jcr);
+
+#endif
+
P(mutex);
jcr->use_count--; /* decrement use count */
P(mutex);
jcr->use_count--; /* decrement use count */
- Dmsg1(200, "Decrement jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "Decrement jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
if (jcr->use_count > 0) { /* if in use */
V(mutex);
if (jcr->use_count > 0) { /* if in use */
V(mutex);
- Dmsg1(200, "jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
return;
}
remove_jcr(jcr);
return;
}
remove_jcr(jcr);
void free_locked_jcr(JCR *jcr)
{
jcr->use_count--; /* decrement use count */
void free_locked_jcr(JCR *jcr)
{
jcr->use_count--; /* decrement use count */
- Dmsg1(200, "Decrement jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "Decrement jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
if (jcr->use_count > 0) { /* if in use */
return;
}
if (jcr->use_count > 0) { /* if in use */
return;
}
for (jcr = jobs; jcr; jcr=jcr->next) {
if (jcr->JobId == JobId) {
jcr->use_count++;
for (jcr = jobs; jcr; jcr=jcr->next) {
if (jcr->JobId == JobId) {
jcr->use_count++;
- Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
if (jcr->VolSessionId == SessionId &&
jcr->VolSessionTime == SessionTime) {
jcr->use_count++;
if (jcr->VolSessionId == SessionId &&
jcr->VolSessionTime == SessionTime) {
jcr->use_count++;
- Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
for (jcr = jobs; jcr; jcr=jcr->next) {
if (strncmp(Job, jcr->Job, len) == 0) {
jcr->use_count++;
for (jcr = jobs; jcr; jcr=jcr->next) {
if (strncmp(Job, jcr->Job, len) == 0) {
jcr->use_count++;
- Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
for (jcr = jobs; jcr; jcr=jcr->next) {
if (strcmp(jcr->Job, Job) == 0) {
jcr->use_count++;
for (jcr = jobs; jcr; jcr=jcr->next) {
if (strcmp(jcr->Job, Job) == 0) {
jcr->use_count++;
- Dmsg1(200, "Increment jcr use_count=%d\n", jcr->use_count);
+ Dmsg2(200, "Increment jcr 0x%x use_count=%d\n", jcr, jcr->use_count);
int bin_to_base64 (char *buf, char *bin, int len);
/* bmisc.c */
int bin_to_base64 (char *buf, char *bin, int len);
/* bmisc.c */
-char *bstrncpy (char *dest, char *src, int maxlen);
-char *bstrncat (char *dest, char *src, int maxlen);
+char *bstrncpy (char *dest, const char *src, int maxlen);
+char *bstrncat (char *dest, const char *src, int maxlen);
void *b_malloc (char *file, int line, size_t size);
#ifndef DEBUG
void *bmalloc (size_t size);
void *b_malloc (char *file, int line, size_t size);
#ifndef DEBUG
void *bmalloc (size_t size);