From f4bd71881db8f792e079fe416d6f3e9cb3eb5f14 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Wed, 2 Feb 2005 22:04:00 +0000 Subject: [PATCH] Second cut ANSI labels git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1811 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/examples/python/EndJob.py | 2 +- bacula/scripts/mtx-changer.in | 9 ++- bacula/src/cats/make_mysql_tables.in | 1 + bacula/src/cats/make_postgresql_tables.in | 5 +- bacula/src/cats/make_sqlite3_tables.in | 1 + bacula/src/cats/make_sqlite_tables.in | 1 + bacula/src/cats/sql_create.c | 6 +- bacula/src/cats/sql_get.c | 51 ++++++++++----- bacula/src/cats/sql_list.c | 12 ++-- bacula/src/cats/sql_update.c | 11 ++-- bacula/src/cats/update_mysql_tables.in | 1 + bacula/src/cats/update_postgresql_tables.in | 3 + bacula/src/cats/update_sqlite3_tables.in | 72 +++++++++++++++++++++ bacula/src/cats/update_sqlite_tables.in | 72 +++++++++++++++++++++ bacula/src/dird/dird_conf.c | 4 +- bacula/src/stored/label.c | 16 ++--- 16 files changed, 218 insertions(+), 49 deletions(-) diff --git a/bacula/examples/python/EndJob.py b/bacula/examples/python/EndJob.py index 282ac7c6ee..f9528eb5cd 100644 --- a/bacula/examples/python/EndJob.py +++ b/bacula/examples/python/EndJob.py @@ -4,7 +4,7 @@ def EndJob(j): jobid = bacula.get(j, "JobId") client = bacula.get(j, "Client") bacula.set(jcr=j, JobReport="Python EndJob output: JobId=%d Client=%s.\n" % (jobid, client)) - if (jobid < 5) : + if (jobid < 2) : startid = bacula.run(j, "run kernsave") print "Python started new Job: jobid=", startid diff --git a/bacula/scripts/mtx-changer.in b/bacula/scripts/mtx-changer.in index d93c77fdd5..f0c885ac11 100644 --- a/bacula/scripts/mtx-changer.in +++ b/bacula/scripts/mtx-changer.in @@ -36,18 +36,17 @@ MTX=@MTX@ # waiting a maximum of 180 seconds. # Note, this is very system dependent, so if you are # not running on Linux, you will probably need to -# re-write it. -# -# If you have a FreeBSD system, you might want to change -# the $(seq 180) to $(jot 180) -- tip from Brian McDonald +# re-write it, or at least change the grep target. # wait_for_drive() { - for i in $(seq 180); do # Wait max 180 seconds + i=0 + while [ $i -le 180 ]; do # Wait max 180 seconds if mt -f $1 status | grep ONLINE >/dev/null 2>&1; then break fi # echo "Device $1 - not ready, retrying..." sleep 1 + i=`expr $i + 1` done } diff --git a/bacula/src/cats/make_mysql_tables.in b/bacula/src/cats/make_mysql_tables.in index b9f9624654..425382102b 100644 --- a/bacula/src/cats/make_mysql_tables.in +++ b/bacula/src/cats/make_mysql_tables.in @@ -185,6 +185,7 @@ CREATE TABLE Pool ( AutoPrune TINYINT DEFAULT 0, Recycle TINYINT DEFAULT 0, PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL, + LabelType TINYINT NOT NULL DEFAULT 0, LabelFormat TINYBLOB, Enabled TINYINT DEFAULT 1, ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool, diff --git a/bacula/src/cats/make_postgresql_tables.in b/bacula/src/cats/make_postgresql_tables.in index d6fde78152..93cfb786e0 100644 --- a/bacula/src/cats/make_postgresql_tables.in +++ b/bacula/src/cats/make_postgresql_tables.in @@ -197,8 +197,9 @@ CREATE TABLE pool recycle smallint not null default 0, pooltype text check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))), - labelformat text not null, - enabled smallint not null default 1, + labeltype integer not null default 0, + labelformat text not null, + enabled smallint not null default 1, scratchpoolid integer, recyclepoolid integer, primary key (poolid) diff --git a/bacula/src/cats/make_sqlite3_tables.in b/bacula/src/cats/make_sqlite3_tables.in index 7c46bb387f..fdaee10675 100644 --- a/bacula/src/cats/make_sqlite3_tables.in +++ b/bacula/src/cats/make_sqlite3_tables.in @@ -186,6 +186,7 @@ CREATE TABLE Pool ( AutoPrune TINYINT DEFAULT 0, Recycle TINYINT DEFAULT 0, PoolType VARCHAR(20) NOT NULL, + LabelType TINYINT DEFAULT 0, LabelFormat VARCHAR(128) NOT NULL, Enabled TINYINT DEFAULT 1, ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0, diff --git a/bacula/src/cats/make_sqlite_tables.in b/bacula/src/cats/make_sqlite_tables.in index 7c46bb387f..fdaee10675 100644 --- a/bacula/src/cats/make_sqlite_tables.in +++ b/bacula/src/cats/make_sqlite_tables.in @@ -186,6 +186,7 @@ CREATE TABLE Pool ( AutoPrune TINYINT DEFAULT 0, Recycle TINYINT DEFAULT 0, PoolType VARCHAR(20) NOT NULL, + LabelType TINYINT DEFAULT 0, LabelFormat VARCHAR(128) NOT NULL, Enabled TINYINT DEFAULT 1, ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0, diff --git a/bacula/src/cats/sql_create.c b/bacula/src/cats/sql_create.c index 689d4dcc3e..4dd809878a 100644 --- a/bacula/src/cats/sql_create.c +++ b/bacula/src/cats/sql_create.c @@ -181,8 +181,8 @@ db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr) Mmsg(mdb->cmd, "INSERT INTO Pool (Name,NumVols,MaxVols,UseOnce,UseCatalog," "AcceptAnyVolume,AutoPrune,Recycle,VolRetention,VolUseDuration," -"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelFormat) " -"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')", +"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelType,LabelFormat) " +"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s',%d,'%s')", pr->Name, pr->NumVols, pr->MaxVols, pr->UseOnce, pr->UseCatalog, @@ -192,7 +192,7 @@ db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr) edit_uint64(pr->VolUseDuration, ed2), pr->MaxVolJobs, pr->MaxVolFiles, edit_uint64(pr->MaxVolBytes, ed3), - pr->PoolType, pr->LabelFormat); + pr->PoolType, pr->LabelType, pr->LabelFormat); Dmsg1(200, "Create Pool: %s\n", mdb->cmd); if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"), diff --git a/bacula/src/cats/sql_get.c b/bacula/src/cats/sql_get.c index eab5f76aaf..8e10b42f8d 100644 --- a/bacula/src/cats/sql_get.c +++ b/bacula/src/cats/sql_get.c @@ -103,14 +103,18 @@ int db_get_file_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr, FILE_DBR *fdbr) { SQL_ROW row; int stat = 0; + char ed1[50], ed2[50], ed3[50]; if (jcr->JobLevel == L_VERIFY_DISK_TO_CATALOG) { Mmsg(mdb->cmd, "SELECT FileId, LStat, MD5 FROM File,Job WHERE " -"File.JobId=Job.JobId AND File.PathId=%u AND " -"File.FilenameId=%u AND Job.Type='B' AND Job.JobSTATUS='T' AND " -"ClientId=%u ORDER BY StartTime DESC LIMIT 1", - fdbr->PathId, fdbr->FilenameId, jr->ClientId); +"File.JobId=Job.JobId AND File.PathId=%s AND " +"File.FilenameId=%s AND Job.Type='B' AND Job.JobSTATUS='T' AND " +"ClientId=%s ORDER BY StartTime DESC LIMIT 1", + edit_int64(fdbr->PathId, ed1), + edit_int64(fdbr->FilenameId, ed2), + edit_int64(jr->ClientId,ed3)); + } else { Mmsg(mdb->cmd, "SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%u AND File.PathId=%u AND " @@ -260,6 +264,7 @@ static int db_get_path_record(JCR *jcr, B_DB *mdb) int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr) { SQL_ROW row; + char ed1[50]; db_lock(mdb); if (jr->JobId == 0) { @@ -271,7 +276,8 @@ int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr) Mmsg(mdb->cmd, "SELECT VolSessionId,VolSessionTime," "PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus," "Type,Level,ClientId " -"FROM Job WHERE JobId=%u", jr->JobId); +"FROM Job WHERE JobId=%s", + edit_int64(jr->JobId, ed1)); } if (!QUERY_DB(jcr, mdb, mdb->cmd)) { @@ -287,7 +293,7 @@ int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr) jr->VolSessionId = str_to_uint64(row[0]); jr->VolSessionTime = str_to_uint64(row[1]); - jr->PoolId = str_to_uint64(row[2]); + jr->PoolId = str_to_int64(row[2]); 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]); @@ -327,7 +333,7 @@ int db_get_job_volume_names(JCR *jcr, B_DB *mdb, JobId_t JobId, POOLMEM **Volume "SELECT VolumeName,MAX(VolIndex) FROM JobMedia,Media WHERE " "JobMedia.JobId=%s AND JobMedia.MediaId=Media.MediaId " "GROUP BY VolumeName " - "ORDER BY 2 ASC", edit_uint64(JobId,ed1)); + "ORDER BY 2 ASC", edit_int64(JobId,ed1)); Dmsg1(130, "VolNam=%s\n", mdb->cmd); *VolumeNames[0] = 0; @@ -527,18 +533,21 @@ int db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr) { SQL_ROW row; int stat = 0; + char ed1[50]; db_lock(mdb); if (pdbr->PoolId != 0) { /* find by id */ Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume," "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles," -"MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.PoolId=%u", pdbr->PoolId); +"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.PoolId=%s", + edit_int64(pdbr->PoolId, ed1)); } else { /* find by name */ Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume," "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles," -"MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name); +"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.Name='%s'", + pdbr->Name); } if (QUERY_DB(jcr, mdb, mdb->cmd)) { @@ -567,8 +576,9 @@ int db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr) pdbr->MaxVolJobs = str_to_int64(row[11]); pdbr->MaxVolFiles = str_to_int64(row[12]); pdbr->MaxVolBytes = str_to_uint64(row[13]); - bstrncpy(pdbr->PoolType, row[13]!=NULL?row[14]:"", sizeof(pdbr->PoolType)); - bstrncpy(pdbr->LabelFormat, row[14]!=NULL?row[15]:"", sizeof(pdbr->LabelFormat)); + bstrncpy(pdbr->PoolType, row[14]!=NULL?row[14]:"", sizeof(pdbr->PoolType)); + pdbr->LabelType = str_to_int64(row[15]); + bstrncpy(pdbr->LabelFormat, row[16]!=NULL?row[16]:"", sizeof(pdbr->LabelFormat)); stat = pdbr->PoolId; } } else { @@ -593,12 +603,14 @@ int db_get_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cdbr) { SQL_ROW row; int stat = 0; + char ed1[50]; db_lock(mdb); if (cdbr->ClientId != 0) { /* find by id */ Mmsg(mdb->cmd, "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention " -"FROM Client WHERE Client.ClientId=%u", cdbr->ClientId); +"FROM Client WHERE Client.ClientId=%s", + edit_int64(cdbr->ClientId, ed1)); } else { /* find by name */ Mmsg(mdb->cmd, "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention " @@ -608,7 +620,6 @@ int db_get_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cdbr) if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { - char ed1[30]; Mmsg1(&mdb->errmsg, _("More than one Client!: %s\n"), edit_uint64(mdb->num_rows, ed1)); Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); @@ -698,12 +709,14 @@ int db_get_fileset_record(JCR *jcr, B_DB *mdb, FILESET_DBR *fsr) { SQL_ROW row; int stat = 0; + char ed1[50]; db_lock(mdb); if (fsr->FileSetId != 0) { /* find by id */ Mmsg(mdb->cmd, "SELECT FileSetId,FileSet,MD5,CreateTime FROM FileSet " - "WHERE FileSetId=%u", fsr->FileSetId); + "WHERE FileSetId=%s", + edit_int64(fsr->FileSetId, ed1)); } else { /* find by name */ Mmsg(mdb->cmd, "SELECT FileSetId,FileSet,CreateTime,MD5 FROM FileSet " @@ -721,7 +734,7 @@ int db_get_fileset_record(JCR *jcr, B_DB *mdb, FILESET_DBR *fsr) if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("FileSet record \"%s\" not found.\n"), fsr->FileSet); } else { - fsr->FileSetId = atoi(row[0]); + fsr->FileSetId = str_to_int64(row[0]); bstrncpy(fsr->FileSet, row[1]!=NULL?row[1]:"", sizeof(fsr->FileSet)); bstrncpy(fsr->MD5, row[2]!=NULL?row[2]:"", sizeof(fsr->MD5)); bstrncpy(fsr->cCreateTime, row[3]!=NULL?row[3]:"", sizeof(fsr->cCreateTime)); @@ -768,10 +781,12 @@ int db_get_media_ids(JCR *jcr, B_DB *mdb, uint32_t PoolId, int *num_ids, uint32_ int stat = 0; int i = 0; uint32_t *id; + char ed1[50]; db_lock(mdb); *ids = NULL; - Mmsg(mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%u", PoolId); + Mmsg(mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%s", + edit_int64(PoolId, ed1)); if (QUERY_DB(jcr, mdb, mdb->cmd)) { *num_ids = sql_num_rows(mdb); if (*num_ids > 0) { @@ -802,6 +817,7 @@ int db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr) { SQL_ROW row; int stat = 0; + char ed1[50]; db_lock(mdb); if (mr->MediaId == 0 && mr->VolumeName[0] == 0) { @@ -816,7 +832,8 @@ int db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr) "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs," "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger," "EndFile,EndBlock,VolParts,LabelType " - "FROM Media WHERE MediaId=%u", mr->MediaId); + "FROM Media WHERE MediaId=%s", + edit_int64(mr->MediaId, ed1)); } else { /* find by name */ Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks," "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes," diff --git a/bacula/src/cats/sql_list.c b/bacula/src/cats/sql_list.c index 794a676479..c6672a288e 100644 --- a/bacula/src/cats/sql_list.c +++ b/bacula/src/cats/sql_list.c @@ -82,8 +82,8 @@ db_list_pool_records(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx, e_ Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog," "AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes," "AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId," - "RecyclePoolId " - "FROM Pool ORDER BY PoolId"); + "RecyclePoolId,LabelType " + " FROM Pool ORDER BY PoolId"); } else { Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat " "FROM Pool ORDER BY PoolId"); @@ -141,16 +141,16 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr, "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites," "VolCapacityBytes,VolStatus,Recycle,VolRetention," "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger," - "EndFile,EndBlock,VolParts,LabelType " - "FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName); + "EndFile,EndBlock,VolParts,LabelType" + " FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName); } else { 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,InChanger," - "EndFile,EndBlock,VolParts,LabelType " - "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId); + "EndFile,EndBlock,VolParts,LabelType" + " FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId); } } else { if (mdbr->VolumeName[0] != 0) { diff --git a/bacula/src/cats/sql_update.c b/bacula/src/cats/sql_update.c index e007bdf2e9..5c8b76f6cc 100644 --- a/bacula/src/cats/sql_update.c +++ b/bacula/src/cats/sql_update.c @@ -227,21 +227,22 @@ int db_update_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr) { int stat; - char ed1[50], ed2[50], ed3[50]; + char ed1[50], ed2[50], ed3[50], ed4[50]; db_lock(mdb); Mmsg(mdb->cmd, "UPDATE Pool SET NumVols=%u,MaxVols=%u,UseOnce=%d,UseCatalog=%d," "AcceptAnyVolume=%d,VolRetention='%s',VolUseDuration='%s'," "MaxVolJobs=%u,MaxVolFiles=%u,MaxVolBytes=%s,Recycle=%d," -"AutoPrune=%d,LabelFormat='%s' WHERE PoolId=%u", +"AutoPrune=%d,LabelType=%d,LabelFormat='%s' WHERE PoolId=%s", pr->NumVols, pr->MaxVols, pr->UseOnce, pr->UseCatalog, pr->AcceptAnyVolume, edit_uint64(pr->VolRetention, ed1), edit_uint64(pr->VolUseDuration, ed2), pr->MaxVolJobs, pr->MaxVolFiles, edit_uint64(pr->MaxVolBytes, ed3), - pr->Recycle, pr->AutoPrune, - pr->LabelFormat, pr->PoolId); + pr->Recycle, pr->AutoPrune, pr->LabelType, + pr->LabelFormat, + edit_int64(pr->PoolId, ed4)); stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); @@ -272,7 +273,7 @@ db_update_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr) localtime_r(&ttime, &tm); strftime(dt, sizeof(dt), "%Y-%m-%d %T", &tm); Mmsg(mdb->cmd, "UPDATE Media SET FirstWritten='%s'" -" WHERE VolumeName='%s'", dt, mr->VolumeName); + " WHERE VolumeName='%s'", dt, mr->VolumeName); stat = UPDATE_DB(jcr, mdb, mdb->cmd); Dmsg1(400, "Firstwritten stat=%d\n", stat); } diff --git a/bacula/src/cats/update_mysql_tables.in b/bacula/src/cats/update_mysql_tables.in index f1bd2a7b51..7d6e579e86 100755 --- a/bacula/src/cats/update_mysql_tables.in +++ b/bacula/src/cats/update_mysql_tables.in @@ -13,6 +13,7 @@ if $bindir/mysql $* -f <res_pool.VolUseDuration, ed1, sizeof(ed1)), res->res_pool.Recycle, NPRT(res->res_pool.label_format)); - sendit(sock, " CleaningPrefix=%s\n", - NPRT(res->res_pool.cleaning_prefix)); + sendit(sock, " CleaningPrefix=%s LabelType=%d\n", + NPRT(res->res_pool.cleaning_prefix), res->res_pool.LabelType); sendit(sock, " RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n", res->res_pool.recycle_oldest_volume, res->res_pool.purge_oldest_volume, diff --git a/bacula/src/stored/label.c b/bacula/src/stored/label.c index 7e10a4b719..47fd0d1e97 100644 --- a/bacula/src/stored/label.c +++ b/bacula/src/stored/label.c @@ -619,7 +619,7 @@ bool write_session_label(DCR *dcr, int label) Dmsg1(90, "session_label record=%x\n", rec); switch (label) { case SOS_LABEL: - if (dev->state & ST_TAPE) { + if (dev->is_tape()) { dcr->StartBlock = dev->block_num; dcr->StartFile = dev->file; } else { @@ -628,7 +628,7 @@ bool write_session_label(DCR *dcr, int label) } break; case EOS_LABEL: - if (dev->state & ST_TAPE) { + if (dev->is_tape()) { dcr->EndBlock = dev->EndBlock; dcr->EndFile = dev->EndFile; } else { @@ -971,13 +971,14 @@ bool write_ansi_ibm_label(DCR *dcr, const char *VolName) int len; int stat; + Dmsg1(100, "LabelType=%d\n", dcr->VolCatInfo.LabelType); switch (dcr->VolCatInfo.LabelType) { case B_BACULA_LABEL: return true; case B_ANSI_LABEL: case B_IBM_LABEL: ser_declare; - Dmsg0(000, "Write ansi label.\n"); + Dmsg0(100, "Write ansi label.\n"); len = strlen(VolName); if (len > 6) { len = 6; /* max len ANSI label */ @@ -1060,8 +1061,8 @@ static int read_ansi_ibm_label(DCR *dcr) * If tape read the following EOF mark, on disk do * not read. */ - Dmsg0(000, "Read ansi label.\n"); - if (dev->state & ST_TAPE) { + Dmsg0(100, "Read ansi label.\n"); + if (dev->is_tape()) { num_rec = 4; } else { num_rec = 3; @@ -1081,12 +1082,11 @@ static int read_ansi_ibm_label(DCR *dcr) Mmsg2(dev->errmsg, _("Read error on device %s in ANSI/IBM label. ERR=%s\n"), dev->dev_name, be.strerror()); Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg); - if (dev->state & ST_EOF) { /* EOF just seen? */ + if (dev->at_eof()) { /* EOF just seen? */ dev->state |= ST_EOT; /* yes, error => EOT */ } return VOL_IO_ERROR; } - Dmsg1(000, "ANSI label=%80s\n", label); } return VOL_OK; } @@ -1100,6 +1100,6 @@ static char *ansi_date(time_t td, char *buf) td = time(NULL); } tm = gmtime(&td); - bsnprintf(buf, 6, "%d", 1000 * (tm->tm_year + 1900 - 2000) + tm->tm_yday); + bsnprintf(buf, 10, "%d ", 1000 * (tm->tm_year + 1900 - 2000) + tm->tm_yday); return buf; } -- 2.39.5