Enabled Archive Date Query, enabled query with time, some minor internal work
This commit is contained in:
@@ -130,10 +130,10 @@ int tsm_listfile_cb(dsmQueryType qType, DataBlk *qResp, void *userdata) {
|
||||
/*
|
||||
* List objects that are in TSM
|
||||
*/
|
||||
int tsm_listfile(dsUint32_t sesshandle, dsmQueryType qType, qryArchiveData qaData, qryBackupData qbData, int verbose) {
|
||||
int tsm_listfile(dsUint32_t sesshandle, dsmQueryType qType, qryArchiveData qaData, qryBackupData qbData) {
|
||||
dsInt16_t rc=0;
|
||||
|
||||
rc = tsm_queryfile(sesshandle,qType,tsm_listfile_cb,NULL,qaData,qbData,verbose);
|
||||
rc = tsm_queryfile(sesshandle,qType,tsm_listfile_cb,NULL,qaData,qbData);
|
||||
|
||||
if (rc != DSM_RC_OK && rc != DSM_RC_ABORT_NO_MATCH)
|
||||
return 0;
|
||||
|
@@ -14,11 +14,15 @@
|
||||
*
|
||||
* The date is passed to this function in the format mmddYYYY
|
||||
*/
|
||||
dsmDate dsmStrToDate(char *s,int verbose) {
|
||||
dsmDate dsmStrToDate(char *s) {
|
||||
extern int verbose;
|
||||
dsmDate *date;
|
||||
dsUint32_t x;
|
||||
dsUint32_t d,t;
|
||||
char *x=NULL, *y=NULL;
|
||||
|
||||
date = (dsmDate*)malloc(sizeof(dsmDate));
|
||||
x = (char *)malloc(sizeof(s));
|
||||
y = (char *)malloc(sizeof(s));
|
||||
|
||||
if (date==NULL) {
|
||||
perror("Arg, out of memory?");
|
||||
@@ -30,18 +34,31 @@ dsmDate dsmStrToDate(char *s,int verbose) {
|
||||
if (verbose)
|
||||
printf("dsmStrToDate: Date String: %s\n", s);
|
||||
|
||||
|
||||
/* if user key in some inputs */
|
||||
if (s[0] != '\0') {
|
||||
x = atol(s);
|
||||
date->month = x / 1000000;
|
||||
strncpy(x,s,sizeof(strchr(s,':')));
|
||||
|
||||
x %= 1000000;
|
||||
date->day = x / 10000;
|
||||
date->year = x % 10000;
|
||||
d = atol(x);
|
||||
date->month = d / 1000000;
|
||||
|
||||
d %= 1000000;
|
||||
date->day = d / 10000;
|
||||
date->year = d % 10000;
|
||||
|
||||
if (strlen(x) != strlen(s)) {
|
||||
y = strchr(s,':')+1;
|
||||
t = atol(y);
|
||||
date->hour = t / 10000;
|
||||
|
||||
t %= 10000;
|
||||
date->minute = t / 100;
|
||||
date->second = t % 100;
|
||||
}
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
printf("dsmStrToDate: date = %d, month = %d, year = %d\n", date->day, date->month, date->year);
|
||||
printf("dsmStrToDate: date = %d, month = %d, year = %d, hour = %d, minute = %d, second = %d\n", date->day, date->month, date->year, date->hour, date->minute, date->second);
|
||||
|
||||
return *date;
|
||||
}
|
||||
@@ -70,7 +87,8 @@ char *dsmDateToStr(dsmDate date) {
|
||||
return s;
|
||||
}
|
||||
|
||||
dsmObjName dsmNameToObjname(char *fsname, char *filename, int verbose) {
|
||||
dsmObjName dsmNameToObjname(char *fsname, char *filename) {
|
||||
extern int verbose;
|
||||
dsmObjName *objname;
|
||||
char *p;
|
||||
|
||||
@@ -141,3 +159,15 @@ double dsmSizeToNum(dsStruct64_t dsStruct64) {
|
||||
// Return number in MB
|
||||
return (float)filesize/1024/1024;
|
||||
}
|
||||
|
||||
void debugLog(int level, _IO_FILE *output, char *message, int die) {
|
||||
extern int verbose;
|
||||
|
||||
if (level > verbose)
|
||||
return;
|
||||
|
||||
fprintf(output,"%s\n",message);
|
||||
|
||||
if (die)
|
||||
exit(die);
|
||||
}
|
||||
|
@@ -118,7 +118,8 @@ int tsm_regfs(dsUint32_t dsmHandle, char *fsname) {
|
||||
}
|
||||
|
||||
/* Send data to TSM for storage */
|
||||
int tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long long length, char *description, dsmSendType sendtype, int verbose) {
|
||||
int tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long long length, char *description, dsmSendType sendtype) {
|
||||
extern int verbose;
|
||||
char *buffer;
|
||||
dsInt16_t rc=0;
|
||||
dsmObjName objName;
|
||||
@@ -153,7 +154,7 @@ int tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long long l
|
||||
}
|
||||
|
||||
memset(&objName,0x00,sizeof(objName));
|
||||
objName = dsmNameToObjname(fsname,filename,verbose);
|
||||
objName = dsmNameToObjname(fsname,filename);
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr,"tsm_sendfile: Starting to send stdin as %s\n",dsmObjnameToStr(objName));
|
||||
@@ -277,7 +278,8 @@ int tsm_sendfile(dsUint32_t dsmHandle, char *fsname, char *filename, long long l
|
||||
}
|
||||
|
||||
/* Get data from TSM for restore */
|
||||
int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaData, qryBackupData qbData, int verbose) {
|
||||
int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaData, qryBackupData qbData) {
|
||||
extern int verbose;
|
||||
dsInt16_t rc=0;
|
||||
struct matchone_cb_data cbdata;
|
||||
dsmGetList getList;
|
||||
@@ -292,14 +294,14 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
|
||||
fprintf(stderr,"tsm_restorefile: Starting to receive %s via stdin\n",dsmObjnameToStr(*qaData.objName));
|
||||
|
||||
gType = gtArchive;
|
||||
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData,verbose);
|
||||
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));
|
||||
|
||||
gType = gtBackup;
|
||||
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData,verbose);
|
||||
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData);
|
||||
|
||||
} else {
|
||||
fprintf(stderr,"tsm_restorefile: Internal error: Unknown qType %d\n",qType);
|
||||
@@ -375,7 +377,8 @@ int tsm_restorefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaD
|
||||
}
|
||||
|
||||
/* Delete data in TSM */
|
||||
int tsm_deletefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaData, qryBackupData qbData, int verbose) {
|
||||
int tsm_deletefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaData, qryBackupData qbData) {
|
||||
extern int verbose;
|
||||
dsInt16_t rc=0;
|
||||
dsUint16_t reason=0;
|
||||
dsmDelInfo *dInfoP;
|
||||
@@ -384,7 +387,7 @@ int tsm_deletefile(dsUint32_t dsmHandle, dsmQueryType qType, qryArchiveData qaDa
|
||||
|
||||
cbdata.numfound = 0;
|
||||
|
||||
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData,verbose);
|
||||
rc = tsm_queryfile(dsmHandle,qType,tsm_matchone_cb,&cbdata,qaData,qbData);
|
||||
if (rc != DSM_RC_OK) {
|
||||
return 0;
|
||||
}
|
||||
|
@@ -149,7 +149,7 @@ dsUint32_t tsm_initsess(char *options) {
|
||||
}
|
||||
|
||||
/* List objects that are in TSM */
|
||||
void tsm_sessioninfo(dsUint32_t dsmHandle) {
|
||||
int tsm_sessioninfo(dsUint32_t dsmHandle) {
|
||||
dsInt16_t rc=0;
|
||||
optStruct dsmOpt;
|
||||
ApiSessInfo dsmSessInfo;
|
||||
@@ -269,6 +269,8 @@ void tsm_sessioninfo(dsUint32_t dsmHandle) {
|
||||
printf(" ARCHIVE retention grace: %u days\n",dsmSessInfo.gpArchRetn);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -279,7 +281,8 @@ void tsm_sessioninfo(dsUint32_t dsmHandle) {
|
||||
* 0 if tsm_queryfile() should skip processing the remaining matches.
|
||||
* 1 otherwise.
|
||||
*/
|
||||
dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_callback usercb, void *userdata, qryArchiveData qaData, qryBackupData qbData, int verbose) {
|
||||
dsInt16_t tsm_queryfile(dsUint32_t dsmHandle, dsmQueryType qType, tsm_query_callback usercb, void *userdata, qryArchiveData qaData, qryBackupData qbData) {
|
||||
extern int verbose;
|
||||
dsInt16_t rc=0;
|
||||
dsmQueryBuff *qDataP;
|
||||
|
||||
|
Reference in New Issue
Block a user