Fixed compile on c7, use of __func__, output of list

This commit is contained in:
Deon George 2015-09-23 11:36:02 +10:00
parent d121df3dc1
commit e3595df586
7 changed files with 116 additions and 111 deletions

View File

@ -2,7 +2,7 @@ TSMAPIDIR=/opt/tivoli/tsm/client/api/bin64/sample
# ** For Digest Calculations, we need to link to openssl libraries, and enable USE_DIGEST in tsmpipe.h **
#TSMLIB=-lApiTSM64
TSMLIB=-lApiTSM64 -lssl
TSMLIB=-lApiTSM64 -lssl -lcrypto
CC=gcc
CFLAGS=-g -W -Wall -Wextra -O -m64 -I$(TSMAPIDIR)

View File

@ -22,7 +22,7 @@ int tsm_listfile_cb(dsmQueryType qType, DataBlk *qResp, void *userdata) {
char objInfo[DSM_MAX_OBJINFO_LENGTH];
if (userdata != NULL ) {
fprintf(stderr, "tsm_listfile_cb: Internal error: userdata != NULL");
debugLog(0,__func__,"ERROR: Internal error: userdata != NULL",0);
return -1;
}
@ -141,7 +141,7 @@ int tsm_listfile_cb(dsmQueryType qType, DataBlk *qResp, void *userdata) {
printf("%40s|%2s|%s|%3s|%19s|%19s|%7.3f MB|%u-%8u",dsmObjnameToStr(respBackup.objName),state,stor,ced,dsmDateToStr(respBackup.insDate),respBackup.expDate.year ? dsmDateToStr(respBackup.expDate) : "",dsmSizeToNum(respBackup.sizeEstimate,bTrue),respBackup.objId.hi,respBackup.objId.lo);
} else {
fprintf(stderr,"tsm_listfile_cb: Internal error: Unknown qType %d\n",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
return -1;
}

View File

@ -79,7 +79,7 @@ char *dsmDateToStr(dsmDate date) {
exit(255);
}
memset(s,0x00,sizeof(s));
memset(s,0x00,(sizeof s));
sprintf(s,"%04i-%02i-%02i %02i:%02i:%02i",
date.year,
@ -107,7 +107,7 @@ dsmObjName dsmNameToObjname(char *fsname, char *filename) {
memset(objname,0x00,sizeof(dsmObjName));
if (verbose)
fprintf(stderr,"dsmNameToObjname: FS: %s Filename: %s\n",fsname,filename);
fprintf(stderr,"%s: FS: %s Filename: %s\n",__func__,fsname,filename);
/* fs == "/filesystem", hl == "/directory/path", ll == "/filename" */
strcpy(objname->fs,fsname);
@ -145,7 +145,7 @@ char *dsmObjnameToStr(dsmObjName objName) {
exit(255);
}
memset(s,0x00,sizeof(s));
memset(s,0x00,(sizeof s));
sprintf(s,"%s%s%s",objName.fs,objName.hl,objName.ll);
@ -154,22 +154,26 @@ char *dsmObjnameToStr(dsmObjName objName) {
double dsmSizeToNum(dsStruct64_t dsStruct64,dsBool_t inMB) {
unsigned long long filesize;
extern int verbose;
filesize = dsStruct64.hi;
filesize <<= 32;
filesize |= dsStruct64.lo;
if (verbose)
fprintf(stderr,"%s: Size: %d\n",__func__,(int)filesize);
// Return number in MB
return inMB ? (float)filesize/1024/1024 : filesize;
return inMB ? (double)filesize/1024/1024 : (double)filesize;
}
void debugLog(int level, _IO_FILE *output, char *message, int die) {
void debugLog(int level, const char *func, char *message, int die) {
extern int verbose;
if (level > verbose)
return;
fprintf(output,"%s\n",message);
fprintf(stderr,"%s: %s\n",func,message);
if (die)
exit(die);

View File

@ -33,12 +33,12 @@ int tsm_matchone_cb(dsmQueryType qType, DataBlk *qResp, void *userdata) {
cbdata->copyGroup = qr->copyGroup;
} else {
fprintf(stderr,"tsm_matchone_cb: Internal error: Unknown qType %d\n",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
return -1;
}
if (cbdata->numfound > 1) {
fprintf(stderr,"tsm_matchone_cb: FAILED: The file specification matched multiple files.\n");
debugLog(0,__func__,"FAILED: The file specification matched multiple files.",0);
return -1;
}
@ -48,10 +48,9 @@ int tsm_matchone_cb(dsmQueryType qType, DataBlk *qResp, void *userdata) {
/* Read/Write a buffer full of data from file descripter */
ssize_t rw_full(int fd, void *buf, size_t count) {
ssize_t done=0;
ssize_t len=0;
while (count) {
ssize_t len;
if (fd == STDIN_FILENO) {
len = read(fd,buf+done,count);
@ -59,8 +58,7 @@ ssize_t rw_full(int fd, void *buf, size_t count) {
len = write(fd,buf+done,count);
} else {
fprintf(stderr,"rw_full: rw_full: Unknown FD\n");
exit(4);
debugLog(0,__func__,"ERROR: Unknown FD",4);
}
if (len == 0) {
@ -82,7 +80,7 @@ ssize_t rw_full(int fd, void *buf, size_t count) {
done += len;
}
return(done);
return done;
}
/* Register a filespace in TSM */
@ -98,7 +96,7 @@ int tsm_regfs(dsUint32_t dsmHandle, char *fsname) {
rc = dsmRegisterFS(dsmHandle,&regFS);
if (rc != DSM_RC_OK && rc != DSM_RC_FS_ALREADY_REGED) {
tsm_printerr(dsmHandle,rc,"tsm_regfs: dsmRegisterFS failed");
printf("%s: dsmRegisterFS() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -143,7 +141,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
md = EVP_get_digestbyname(digest);
if (! md) {
printf("tsm_sendfile: Unknown message digest %s\n", digest);
printf("%s: Unknown message digest %s\n",__func__,digest);
return 0;
}
}
@ -156,7 +154,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
// Warn if we wont do compression
if (verbose && compressEnabled && length <= DSM_MIN_COMPRESS_SIZE)
fprintf(stderr,"tsm_sendfile: WARNING: Size (%i) too small for compression/de-duplication, even though it is enabled",(int)length);
fprintf(stderr,"%s: WARNING: Size (%i) too small for compression/de-duplication, even though it is enabled",__func__,(int)length);
// Log start backup
if (startstop)
@ -165,7 +163,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
// Start a Transaction
rc = dsmBeginTxn(dsmHandle);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_sendfile: dsmBeginTxn failed");
printf("%s: dsmBeginTxn() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -173,20 +171,20 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
objName = dsmNameToObjname(fsname,filename);
if (verbose)
fprintf(stderr,"tsm_sendfile: Starting to send stdin as %s\n",dsmObjnameToStr(objName));
fprintf(stderr,"%s: Starting to send stdin as %s\n",__func__,dsmObjnameToStr(objName));
memset(&mcBindKey,0x00,sizeof(mcBindKey));
mcBindKey.stVersion = mcBindKeyVersion;
rc = dsmBindMC(dsmHandle,&objName,sendtype,&mcBindKey);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_sendfile: dsmBindMC failed");
printf("%s: dsmBindMC() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
if (verbose > 1) {
char *cgdest=NULL;
fprintf(stderr,"tsm_sendfile: Bound to Management Class: %s\n",mcBindKey.mcName);
fprintf(stderr,"%s: Bound to Management Class: %s\n",__func__,mcBindKey.mcName);
if ((sendtype == stArchiveMountWait || sendtype == stArchive) && mcBindKey.archive_cg_exists) {
cgdest = mcBindKey.archive_copy_dest;
@ -195,12 +193,12 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
cgdest = mcBindKey.backup_copy_dest;
} else {
fprintf(stderr,"tsm_sendfile: Internal error: Unknown qType %d\n",sendtype);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,sendtype);
return -1;
}
if (cgdest)
fprintf(stderr,"tsm_sendfile: Destination Copy Group: %s\n",cgdest);
fprintf(stderr,"%s: Destination Copy Group: %s\n",__func__,cgdest);
}
memset(&objAttr,0x00,sizeof(ObjAttr));
@ -222,7 +220,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
rc = dsmSendObj(dsmHandle,sendtype,archDataP,&objName,&objAttr,NULL);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_sendfile: dsmSendObj failed");
printf("%s: dsmSendObj() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return(0);
}
@ -259,7 +257,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
rc = dsmSendData(dsmHandle,&dataBlk);
if (rc != DSM_RC_OK && rc != DSM_RC_COMPRESS_GREW) {
tsm_printerr(dsmHandle,rc,"tsm_sendfile: dsmSendData failed");
printf("%s: dsmSendData() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
}
@ -272,17 +270,17 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
dsmEndSendObjExOut.stVersion = dsmEndSendObjExOutVersion;
if ((rc = dsmEndSendObjEx(&dsmEndSendObjExIn,&dsmEndSendObjExOut)) != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_sendfile: dsmEndSendObjEx failed");
printf("%s: dsmEndSendObjEx() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
rc = dsmEndTxn(dsmHandle,DSM_VOTE_COMMIT,&reason);
if (rc == DSM_RC_CHECK_REASON_CODE || (rc == DSM_RC_OK && reason != DSM_RC_OK)) {
tsm_printerr(dsmHandle,reason,"tsm_sendfile: dsmEndTxn failed, reason");
printf("%s: dsmEndTxn() failed %s\n",__func__,tsm_printerr(dsmHandle,reason));
return 0;
} else if(rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_sendfile: dsmEndTxn failed");
printf("%s: dsmEndTxn() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -296,7 +294,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
digest_str[strlen(digest_str)+1] = '\0';
fprintf(stdout,"%s %s (%s)",digest_str,dsmObjnameToStr(objName),digest);
printf("%s %s (%s)",digest_str,dsmObjnameToStr(objName),digest);
}
objAttr.objInfo=digest_str;
@ -316,9 +314,9 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
if (summary) {
if (! digest)
fprintf(stdout,"%s",dsmObjnameToStr(objName));
printf("%s",dsmObjnameToStr(objName));
fprintf(stdout," [%5.3f/%5.3f/%5.3f/%5.3f] (%s/%s)",
printf(" [%5.3f/%5.3f/%5.3f/%5.3f] (%s/%s)",
dsmSizeToNum(dsmEndSendObjExOut.totalBytesSent,bTrue),
dsmEndSendObjExOut.objDeduplicated ? dsmSizeToNum(dsmEndSendObjExOut.totalDedupSize,bTrue) : 0.0,
dsmEndSendObjExOut.objCompressed ? dsmSizeToNum(dsmEndSendObjExOut.totalCompressSize,bTrue) : 0.0,
@ -328,7 +326,7 @@ double tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long lon
}
if (digest || summary)
fprintf(stdout,"\n");
printf("\n");
return dsmSizeToNum(dsmEndSendObjExOut.totalBytesSent,bFalse);
}
@ -347,20 +345,20 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
if (qType == qtArchive) {
if (verbose)
fprintf(stderr,"tsm_restorefile: Starting to receive %s via stdin\n",dsmObjnameToStr(*qaData.objName));
fprintf(stderr,"%s: Starting to receive %s via stdin\n",__func__,dsmObjnameToStr(*qaData.objName));
gType = gtArchive;
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData);
} else if (qType == qtBackup) {
if (verbose)
fprintf(stderr,"tsm_restorefile: Starting to receive %s via stdin\n",dsmObjnameToStr(*qbData.objName));
fprintf(stderr,"%s: Starting to receive %s via stdin\n",__func__,dsmObjnameToStr(*qbData.objName));
gType = gtBackup;
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData);
} else {
fprintf(stderr,"tsm_restorefile: Internal error: Unknown qType %d\n",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
return -1;
}
@ -368,7 +366,7 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
return 0;
if (cbdata.numfound == 0) {
fprintf(stderr,"tsm_restorefile: FAILED: The file specification did not match any file.\n");
debugLog(0,__func__,"FAILED: The file specification did not match any file.",0);
return 0;
}
@ -380,7 +378,7 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
rc = dsmBeginGetData(dsmHandle,bTrue,gType,&getList);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_restorefile: dsmBeginGetData failed");
printf("%s: dsmBeginGetData() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -408,7 +406,7 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
}
if (rc != DSM_RC_FINISHED) {
tsm_printerr(dsmHandle,rc,"tsm_restorefile: dsmGetObj/dsmGetData failed");
printf("%s: dsmGetObj()/dsmGetData() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -419,13 +417,13 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
rc = dsmEndGetObj(dsmHandle);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_restorefile: dsmEndGetObj failed");
printf("%s: dsmEndGetObj() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
rc = dsmEndGetData(dsmHandle);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_restorefile: dsmEndGetData failed");
printf("%s: dsmEndGetData() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -449,13 +447,13 @@ int tsm_deletefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaDa
}
if (cbdata.numfound == 0) {
fprintf(stderr,"tsm_deletefile: FAILED: The file specification did not match any file.\n");
debugLog(0,__func__,"FAILED: The file specification did not match any file.",0);
return 0;
}
if (qType == qtArchive) {
if (verbose)
fprintf(stderr,"tsm_deletefile: Deleting archive file %s\n",dsmObjnameToStr(*qaData.objName));
fprintf(stderr,"%s: Deleting archive file %s\n",__func__,dsmObjnameToStr(*qaData.objName));
dType = dtArchive;
@ -467,7 +465,7 @@ int tsm_deletefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaDa
} else if (qType == qtBackup) {
if (verbose)
fprintf(stderr,"tsm_deletefile: Deleting backup file %s\n",dsmObjnameToStr(*qbData.objName));
fprintf(stderr,"%s: Deleting backup file %s\n",__func__,dsmObjnameToStr(*qbData.objName));
dType = dtBackup;
@ -479,29 +477,29 @@ int tsm_deletefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaDa
dInfoP = (dsmDelInfo *) &dbInfo;
} else {
fprintf(stderr,"tsm_matchone_cb: Internal error: Unknown qType %d\n",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
return -1;
}
rc = dsmBeginTxn(dsmHandle);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_deletefile: dsmBeginTxn failed");
printf("%s: dsmBeginTxn() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
rc = dsmDeleteObj(dsmHandle,dType,*dInfoP);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_deletefile: dsmDeleteObj failed");
printf("%s: dsmDeleteObj() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
rc = dsmEndTxn(dsmHandle,DSM_VOTE_COMMIT,&reason);
if (rc == DSM_RC_CHECK_REASON_CODE || (rc == DSM_RC_OK && reason != DSM_RC_OK)) {
tsm_printerr(dsmHandle,reason,"tsm_deletefile: dsmEndTxn failed, reason");
printf("%s: dsmEndTxn() failed %s\n",__func__,tsm_printerr(dsmHandle,reason));
return 0;
} else if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_deletefile: dsmEndTxn failed");
printf("%s: dsmEndTxn() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -521,7 +519,7 @@ int tsm_updatefs(dsUint32_t dsmHandle, char *fsname, long long size) {
rc = dsmUpdateFS(dsmHandle,fsname,&fsUpdateP,DSM_FSUPD_OCCUPANCY | DSM_FSUPD_CAPACITY);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_updatefs: dsmUpdateFS failed");
printf("%s: dsmUpdateFS() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
@ -536,7 +534,7 @@ int tsm_datefs(dsUint32_t dsmHandle, char *fsname, int startstop) {
rc = dsmUpdateFS(dsmHandle,fsname,&fsUpdateP,startstop);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_datefs: dsmUpdateFS failed");
printf("%s: dsmUpdateFS() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}

View File

@ -16,8 +16,11 @@
dsBool_t compressEnabled=bFalse; // Is compression enabled
/* Print out TSM Error Code */
void tsm_printerr(dsUint32_t dsmHandle, dsInt16_t rc, char *str) {
char *tsm_printerr(dsUint32_t dsmHandle, dsInt16_t rc) {
char rcStr[DSM_MAX_RC_MSG_LENGTH];
char *s;
s = malloc(sizeof(rcStr));
if (rc == DSM_RC_WILL_ABORT) {
dsUint16_t reason;
@ -30,7 +33,11 @@ void tsm_printerr(dsUint32_t dsmHandle, dsInt16_t rc, char *str) {
dsmRCMsg(dsmHandle,rc,rcStr);
fprintf(stderr, "tsmpipe: %s\n (rc=%s)\n",str,rcStr);
strtok(rcStr, "\n");
sprintf(s,"[rc=%s]",rcStr);
return s;
}
/* Check the TSM API Version */
@ -111,13 +118,13 @@ dsUint32_t tsm_initsess(char *options) {
rc = dsmChangePW(dsmHandle,NULL,NULL);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"dsmChangePW failed");
printf("%s: dsmChangePW() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return 0;
}
} else if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle, rc, "dsmInitEx failed");
printf("%s: dsmInitEx() failed %s\n",__func__,tsm_printerr(dsmHandle, rc));
dsmTerminate(dsmHandle);
return 0;
@ -140,9 +147,7 @@ dsUint32_t tsm_initsess(char *options) {
}
if (!rc || (compressEnabled && ! dsmOpt.compressalways)) {
fprintf(stderr,!rc ? "Error Querying Session Capabilities" : "Error, COMPRESSion is ENABLED, but not COMPRESSAlways Yes\n");
fprintf(stderr,"\n");
exit(1);
debugLog(0,__func__,!rc ? "ERROR: Error Querying Session Capabilities" : "ERROR: COMPRESSion is ENABLED, but not COMPRESSAlways Yes",1);
}
return dsmHandle;
@ -150,6 +155,7 @@ dsUint32_t tsm_initsess(char *options) {
/* List objects that are in TSM */
int tsm_sessioninfo(dsUint32_t dsmHandle) {
extern int verbose;
dsInt16_t rc=0;
optStruct dsmOpt;
ApiSessInfo dsmSessInfo;
@ -180,7 +186,7 @@ int tsm_sessioninfo(dsUint32_t dsmHandle) {
rc = dsmQuerySessOptions(dsmHandle, &dsmOpt);
if (rc)
printf("dsmQuerySessOptions error on issueing Query Session Options. Rc = %d\n",rc);
printf("%s: ERROR dsmQuerySessOptions() unable to query Session Options. RC = %d\n",__func__,rc);
else {
printf("dsmQuerySessOptions:\n");
printf(" DSMI_DIR: %s\n",dsmOpt.dsmiDir);
@ -191,11 +197,17 @@ int tsm_sessioninfo(dsUint32_t dsmHandle) {
case DSM_COMM_TCP : strcpy(t,"TCP/IP"); break;
case DSM_COMM_NAMEDPIPE : strcpy(t,"NAMED PIPE"); break;
case DSM_COMM_SHM : strcpy(t,"SHARED MEMORY"); break;
case 6 : strcpy(t,"TCP/IP v6"); break; // There is no DSM_COMM_ const for TCPIPv6
default: strcpy(t,"UNKNOWN");
}
printf(" COMMmethod: %s\n",t);
if (verbose)
fprintf(stderr,"%s: commMethod: [%d]\n",__func__,dsmOpt.commMethod);
printf(" TCPServerAddress: %s\n",dsmOpt.serverAddress);
if (verbose)
fprintf(stderr,"%s: serverAddress: [%s]\n",__func__,dsmOpt.serverAddress);
printf(" NODEName: %s\n",dsmOpt.nodeName);
printf(" COMPRESSIon: %s\n",dsmOpt.compression ? "YES" : "NO");
printf(" COMPRESSAlways: %s\n",dsmOpt.compressalways ? "YES" : "NO");
@ -207,7 +219,7 @@ int tsm_sessioninfo(dsUint32_t dsmHandle) {
rc = dsmQuerySessInfo(dsmHandle, &dsmSessInfo);
if (rc)
printf("dsmQuerySessOptions error on issueing Query Session Options. Rc = %d\n",rc);
printf("%s: ERROR dsmQuerySessInfo() unable to query Session Info. RC = %d\n",__func__,rc);
else {
printf("\n");
printf("dsmQuerySessInfo:\n");
@ -295,7 +307,7 @@ dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_call
qDataP = &qaData;
if (verbose)
fprintf(stderr,"tsm_queryfile: Query filespace %s\n",dsmObjnameToStr(*qaData.objName));
fprintf(stderr,"%s: Query filespace %s\n",__func__,dsmObjnameToStr(*qaData.objName));
qryRespArchiveData qaResp;
qaResp.stVersion = qryRespArchiveDataVersion;
@ -308,10 +320,10 @@ dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_call
qDataP = &qbData;
if (verbose)
fprintf(stderr,"tsm_queryfile: Query filespace %s\n",dsmObjnameToStr(*qbData.objName));
fprintf(stderr,"%s: Query filespace %s\n",__func__,dsmObjnameToStr(*qbData.objName));
if (verbose > 1) {
fprintf(stderr,"tsm_queryfile: PIT Date: %s\n",dsmDateToStr(qbData.pitDate));
fprintf(stderr,"tsm_queryfile: OBJSTATE : %s\n",qbData.objState==DSM_ACTIVE ? "DSM_ACTIVE" : "DSM_ANY_MATCH");
fprintf(stderr,"%s: PIT Date: %s\n",__func__,dsmDateToStr(qbData.pitDate));
fprintf(stderr,"%s: OBJSTATE : %s\n",__func__,qbData.objState==DSM_ACTIVE ? "DSM_ACTIVE" : "DSM_ANY_MATCH");
}
qryRespBackupData qbResp;
@ -322,13 +334,13 @@ dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_call
break;
default:
fprintf(stderr,"tsm_queryfile: ERROR: Unknown qType: %d?\n",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
exit(1);
}
rc = dsmBeginQuery(dsmHandle, qType, qDataP);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_queryfile: dsmBeginQuery failed");
printf("%s: dsmBeginQuery() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return rc;
}
@ -348,12 +360,12 @@ dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_call
rObjName = &(qr->objName);
} else {
fprintf(stderr,"tsm_queryfile: Internal error: Unknown qType %d\n",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
return DSM_RC_UNKNOWN_ERROR;
}
fprintf(stderr,"tsm_queryfile: Match file %s\n",dsmObjnameToStr(*rObjName));
fprintf(stderr,"%s: Match file %s\n",__func__,dsmObjnameToStr(*rObjName));
}
if (usercb == NULL)
@ -369,13 +381,13 @@ dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_call
}
if (rc != DSM_RC_FINISHED && rc != DSM_RC_MORE_DATA) {
tsm_printerr(dsmHandle,rc,"tsm_queryfile: dsmGetNextObj failed");
printf("%s: dsmGetNextObj() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return rc;
}
rc = dsmEndQuery(dsmHandle);
if (rc != DSM_RC_OK) {
tsm_printerr(dsmHandle,rc,"tsm_queryfile: dsmEndQuery failed");
printf("%s: dsmEndQuery() failed %s\n",__func__,tsm_printerr(dsmHandle,rc));
return rc;
}

View File

@ -50,7 +50,7 @@ int copy_env(const char *from, const char *to) {
e = getenv(from);
if (!e) {
fprintf(stderr,"tsmpipe: Environment variable %s not set\n",from);
fprintf(stderr,"%s: Environment variable %s not set\n",__func__,from);
return 0;
}
@ -105,8 +105,7 @@ void usage(void) {
}
void usage_action(void) {
fprintf(stderr, "tsmpipe: ERROR: Must give one of -i, -c, -x, -d, -t\n");
exit(1);
debugLog(0,__func__,"ERROR: Must give one of -i, -c, -x, -d, -t",1);
}
@ -162,54 +161,46 @@ int main(int argc, char *argv[]) {
case 'N': insdate_high = optarg; break;
case ':':
fprintf(stderr, "tsmpipe: Option -%c requires an operand\n", optopt);
fprintf(stderr,"%s: Option -%c requires an operand\n",__func__,optopt);
exit(1);
case '?':
fprintf(stderr, "tsmpipe: Unrecognized option: -%c\n", optopt);
fprintf(stderr,"%s: Unrecognized option: -%c\n",__func__,optopt);
exit(1);
}
}
// Arguement Validation
if (action == 0) {
fprintf(stderr, "tsmpipe: ERROR: Must give one of -i, -c, -x, -d, -t\n");
exit(1);
debugLog(0,__func__,"ERROR: Must give one of -i, -c, -x, -d, -t",1);
}
if (pitdate && qType != qtBackup) {
fprintf(stderr, "tsmpipe: ERROR: -P can only be used with -B\n");
exit(1);
debugLog(0,__func__,"ERROR: -P can only be used with -B",1);
}
if ((insdate_low|| insdate_high || expdate_low || expdate_high) && qType != qtArchive) {
fprintf(stderr, "tsmpipe: ERROR: -e, -E, -n, -N can only be used with -A\n");
exit(1);
debugLog(0,__func__,"ERROR: -e, -E, -n, -N can only be used with -A",1);
}
if (action != ACTION_INFO) {
if (! space) {
fprintf(stderr, "tsmpipe: ERROR: Must give -s filespacename\n");
exit(1);
debugLog(0,__func__,"ERROR: Must give -s filespacename",1);
}
if (! filename && action != ACTION_UPDATE) {
fprintf(stderr, "tsmpipe: ERROR: Must give -f filename\n");
exit(1);
debugLog(0,__func__,"ERROR: Must give -f filename",1);
}
if ((action == ACTION_CREATE || action == ACTION_CREATE_UPDATE || action == ACTION_UPDATE) && ! lenstr) {
fprintf(stderr, "tsmpipe: ERROR: Must give -l|-L length with -c | -u\n");
exit(1);
debugLog(0,__func__,"ERROR: Must give -l|-L length with -c | -u",1);
}
if ((action != ACTION_CREATE && action != ACTION_CREATE_UPDATE && action != ACTION_UPDATE) && lenstr) {
fprintf(stderr, "tsmpipe: ERROR: -l|-L length useless without -c | -u\n");
exit(1);
debugLog(0,__func__,"ERROR: -l|-L length useless without -c | -u",1);
}
if (desc && qType != qtArchive) {
fprintf(stderr, "tsmpipe: ERROR: -D desc useless without -A\n");
exit(1);
debugLog(0,__func__,"ERROR: -D desc useless without -A",1);
}
}
@ -222,18 +213,18 @@ int main(int argc, char *argv[]) {
exit(1);
// OK, we are ready to talk to TSM
debugLog(1,stderr,"tsmpipe: Create TSM session",0);
debugLog(1,__func__,"Create TSM session",0);
dsmHandle = tsm_initsess(options);
if (! dsmHandle)
debugLog(0,stderr,"tsmpipe: Unable to create TSM session?",2);
debugLog(0,__func__,"ERROR: Unable to create TSM session?",2);
debugLog(2,stderr,"tsmpipe: Session Initiated",0);
debugLog(2,__func__,"Session Initiated",0);
switch (action) {
// Show our session information
case ACTION_INFO:
debugLog(2,stderr,"tsmpipe: INFO Operation",0);
debugLog(2,__func__,"INFO Operation",0);
rc = tsm_sessioninfo(dsmHandle);
break;
@ -241,11 +232,11 @@ int main(int argc, char *argv[]) {
// If we are backing up or archiving
case ACTION_CREATE:
case ACTION_CREATE_UPDATE:
debugLog(2,stderr,"tsmpipe: CREATE Operation",0);
debugLog(2,__func__,"CREATE Operation",0);
length = atof(lenstr);
if (length <= 0)
debugLog(0,stderr,"tsmpipe: ERROR: Provide positive length, overestimate if guessing",1);
debugLog(0,__func__,"ERROR: Provide positive length, overestimate if guessing",1);
#ifdef USE_DIGEST
stored = tsm_sendfile(dsmHandle,space,filename,length,desc,((qType == qtArchive) ? stArchiveMountWait : stBackupMountWait),((action == ACTION_CREATE_UPDATE && qType==qtBackup) ? bTrue : bFalse),summary,digest);
@ -255,7 +246,7 @@ int main(int argc, char *argv[]) {
rc = stored ? 1 : 0;
if (rc && action == ACTION_CREATE_UPDATE && qType==qtBackup) {
debugLog(2,stderr,"tsmpipe: UPDATE FS Operation",0);
debugLog(2,__func__,"UPDATE FS Operation",0);
rc = tsm_updatefs(dsmHandle,space,stored);
}
@ -322,28 +313,28 @@ int main(int argc, char *argv[]) {
break;
default:
fprintf(stderr,"tsmpipe: UNKNOWN Type %d",qType);
fprintf(stderr,"%s: UNKNOWN Type %d\n",__func__,qType);
exit(2);
}
switch (action) {
case ACTION_DELETE:
debugLog(2,stderr,"tsmpipe: DELETE Operation",0);
debugLog(2,__func__,"DELETE Operation",0);
rc = tsm_deletefile(dsmHandle,qType,qaData,qbData);
break;
case ACTION_EXTRACT:
debugLog(2,stderr,"tsmpipe: EXTRACT Operation",0);
debugLog(2,__func__,"EXTRACT Operation",0);
rc = tsm_restorefile(dsmHandle,qType,qaData,qbData);
break;
case ACTION_LIST:
debugLog(2,stderr,"tsmpipe: LIST Operation",0);
debugLog(2,__func__,"LIST Operation",0);
rc = tsm_listfile(dsmHandle,qType,qaData,qbData);
break;
default:
fprintf(stderr,"tsmpipe: Action not yet programmed for%d",action);
fprintf(stderr,"%s: Action not yet programmed for %d\n",__func__,action);
exit(2);
}
break;
@ -351,24 +342,24 @@ int main(int argc, char *argv[]) {
case ACTION_UPDATE:
length = atof(lenstr);
if (length <= 0)
debugLog(0,stderr,"tsmpipe: ERROR: Provide positive length",1);
debugLog(0,__func__,"ERROR: Provide positive length",1);
rc = tsm_updatefs(dsmHandle,space,length);
break;
default:
fprintf(stderr,"tsmpipe: UNKNOWN Operation %d",action);
fprintf(stderr,"%s: UNKNOWN Operation %d",__func__,action);
exit(2);
}
debugLog(1,stderr,"tsmpipe: Terminate TSM session",0);
debugLog(1,__func__,"Terminate TSM session",0);
dsmTerminate(dsmHandle);
if (! rc)
debugLog(0,stderr,"tsmpipe: Operation Failed",3);
debugLog(0,__func__,"ERROR: Operation Failed",3);
else
debugLog(1,stderr,"tsmpipe: Operation Success",0);
debugLog(1,__func__,"Operation Success",0);
return 0;
}

View File

@ -19,8 +19,8 @@ typedef int (*tsm_query_callback)(dsmQueryType, DataBlk *, void *);
struct matchone_cb_data { int numfound; dsStruct64_t objId; dsUint32_t copyGroup; };
extern void tsm_printerr (dsUint32_t dsmHandle, dsInt16_t rc, char *str);
extern void debugLog(int level, _IO_FILE *output, char *message, int die);
extern char *tsm_printerr (dsUint32_t dsmHandle, dsInt16_t rc);
extern void debugLog (int level, const char *func, char *message, int die);
extern dsmDate dsmStrToDate(char *s);
extern dsmObjName dsmNameToObjname(char *fsname, char *filename);