Enabled Archive Date Query, enabled query with time, some minor internal work

This commit is contained in:
Deon George
2013-11-07 15:10:18 +11:00
parent 2fd647af8d
commit b3334a2401
6 changed files with 207 additions and 159 deletions

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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;