00001
00002
00003
00004
00005
00006 #include "reNaraMetaData.h"
00007 #include "apiHeaderAll.h"
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 int
00040 msiExtractNaraMetadata (ruleExecInfo_t *rei)
00041 {
00042 FILE *fp;
00043 char str[500];
00044 char *substring;
00045 int counter;
00046 int flag;
00047 char attr[100];
00048 char value[500];
00049 modAVUMetadataInp_t modAVUMetadataInp;
00050 int status;
00051
00052 char metafile[MAX_NAME_LEN];
00053
00054 snprintf (metafile, MAX_NAME_LEN, "%-s/reConfigs/%-s", getConfigDir(),
00055 NARA_META_DATA_FILE);
00056
00057 if((fp=fopen(metafile, "r")) == NULL) {
00058 rodsLog (LOG_ERROR,
00059 "msiExtractNaraMetadata: Cannot open the metadata file %s.", metafile);
00060 return (UNIX_FILE_OPEN_ERR);
00061 }
00062
00063 memset (&modAVUMetadataInp, 0, sizeof (modAVUMetadataInp));
00064 modAVUMetadataInp.arg0 = "add";
00065
00066 while(!feof(fp)){
00067 counter = 0;
00068 flag = 0;
00069 if(fgets(str, 500, fp)){
00070 substring = strtok (str,"|");
00071 while (substring != NULL){
00072 if(flag == 0 && strcmp(substring,rei->doi->objPath) == 0){
00073 flag = 2;
00074 }
00075
00076 if(counter == 1){
00077 strcpy( attr, substring );
00078 }
00079 if(flag == 2 && counter == 2){
00080 strcpy( value, substring );
00081
00082 modAVUMetadataInp.arg1 = "-d";
00083 modAVUMetadataInp.arg2 = rei->doi->objPath;
00084 modAVUMetadataInp.arg3 = attr;
00085 modAVUMetadataInp.arg4 = value;
00086 modAVUMetadataInp.arg5 = "";
00087 status = rsModAVUMetadata (rei->rsComm, &modAVUMetadataInp);
00088 rodsLog (LOG_DEBUG, "msiExtractNaraMetadata: %s:%s",attr, value);
00089 }
00090 substring = strtok (NULL, "|");
00091 counter++;
00092 }
00093 }
00094 }
00095 fclose(fp);
00096 return(0);
00097 }
00098