Пример #1
0
int irods_reli_md5( const char *host, const char *path, char *digest )
{
	dataObjInp_t request;
	int result;
	char *str = 0;

	struct irods_server *server = connect_to_host(host);
	if(!server) return -1;

	memset(&request,0,sizeof(request));
	strcpy(request.objPath,path);
	
	debug(D_IRODS,"rcDataObjChksum %s %s",host,path);
	result = rcDataObjChksum(server->conn,&request,&str);
	debug(D_IRODS,"= %d",result);

	if(result<0) {
		errno = irods_reli_errno(result);
		return -1;
	} else {
		/* rcDataObjChecksum returns the checksum as ASCII */
		/* but Parrot is expecting 16 bytes of binary data */
		int i;

		for(i=0;i<16;i++) {
			digest[i] = hex_to_byte(&str[2*i]);
		}

		debug(D_IRODS,"%s",str);
		free(str);
		return 0;
	}
}
Пример #2
0
int
chksumDataObjUtil (rcComm_t *conn, char *srcPath, 
rodsEnv *myRodsEnv, rodsArguments_t *rodsArgs, 
dataObjInp_t *dataObjInp)
{
    int status;
    struct timeval startTime, endTime;
    char *chksumStr = NULL;
    char myDir[MAX_NAME_LEN], myFile[MAX_NAME_LEN];
 
    if (srcPath == NULL) {

       rodsLog (LOG_ERROR,
          "chksumDataObjUtil: NULL srcPath input");
        return (USER__NULL_INPUT_ERR);
    }

    if (rodsArgs->verbose == True) {
        (void) gettimeofday(&startTime, (struct timezone *)0);
    }

    rstrcpy (dataObjInp->objPath, srcPath, MAX_NAME_LEN);

    status = rcDataObjChksum (conn, dataObjInp, &chksumStr);

    if (status < 0) {
#if 0
	if (status == CAT_NO_ROWS_FOUND && rodsArgs->resource == True) {
	    if (rodsArgs->verbose == True) {
		printf ("%s does not exist in resource %s\n",
		  dataObjInp->objPath, rodsArgs->resourceString);
	    }
	    return 0;
	} else {
#endif
	    ChksumCnt++;
	    FailedChksumCnt++;
	    rodsLogError (LOG_ERROR, status,
	     "chksumDataObjUtil: rcDataObjChksum error for %s",
	     dataObjInp->objPath);
	    return status;
#if 0
	}
#endif
    } else {
	ChksumCnt++;
    }
    splitPathByKey (dataObjInp->objPath, myDir, myFile, '/');
    if (rodsArgs->silent == False) {
        printf ("    %-30.30s    %s\n", myFile, chksumStr);
        free (chksumStr);     
        if (rodsArgs->verbose == True) {
            (void) gettimeofday(&endTime, (struct timezone *)0);
            printTiming (conn, dataObjInp->objPath, -1, NULL,
             &startTime, &endTime);
	}
    }

    return (status);
}