Changeset 1747
- Timestamp:
- 08/11/11 16:13:19 (7 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/napi.h (modified) (3 diffs)
-
src/napi.c (modified) (9 diffs)
-
src/nxxml.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/napi.h
r1742 r1747 97 97 * \li NXACC_CREATE5 create a NeXus HDF-5 file. 98 98 * \li NXACC_CREATEXML create a NeXus XML file. 99 * \li NXACC_CHECKNAMESYNTAX Check names conform to NeXus allowed characters. 99 100 */ 100 101 typedef enum {NXACC_READ=1, NXACC_RDWR=2, NXACC_CREATE=3, NXACC_CREATE4=4, 101 NXACC_CREATE5=5, NXACC_CREATEXML=6, NXACC_TABLE=8, NXACC_NOSTRIP=128 } NXaccess_mode;102 NXACC_CREATE5=5, NXACC_CREATEXML=6, NXACC_TABLE=8, NXACC_NOSTRIP=128, NXACC_CHECKNAMESYNTAX=256 } NXaccess_mode; 102 103 103 104 /** … … 896 897 typedef struct { 897 898 NXhandle pNexusData; 898 int stripFlag;899 899 NXstatus ( *nxreopen)(NXhandle pOrigHandle, NXhandle* pNewHandle); 900 900 NXstatus ( *nxclose)(NXhandle* pHandle); … … 931 931 NXstatus ( *nxnativeinquirefile)(NXhandle handle, char* externalfile, const int filenamelength); 932 932 NXstatus ( *nxnativeisexternallink)(NXhandle handle, CONSTCHAR* name, char* url, int urllen); 933 int stripFlag; 934 int checkNameSyntax; 933 935 } NexusFunction, *pNexusFunction; 934 936 /*---------------------*/ -
trunk/src/napi.c
r1745 r1747 143 143 * valid NeXus names 144 144 */ 145 int validNXName(const char* name )145 int validNXName(const char* name, int allow_colon) 146 146 { 147 147 int i; … … 156 156 (name[i] >= '0' && name[i] <= '9') || 157 157 (name[i] == '_') ) 158 { 159 ; 160 } 161 else if (allow_colon && name[i] == ':') 158 162 { 159 163 ; … … 491 495 am = (NXaccess)(am & ~NXACC_NOSTRIP); 492 496 } 497 fHandle->checkNameSyntax = 0; 498 if (am & NXACC_CHECKNAMESYNTAX) { 499 fHandle->checkNameSyntax = 1; 500 am = (NXaccess)(am & ~NXACC_CHECKNAMESYNTAX); 501 } 502 493 503 494 504 if (my_am==NXACC_CREATE) { … … 685 695 char buffer[256]; 686 696 pNexusFunction pFunc = handleToNexusFunc(fid); 687 if ( (nxclass != NULL) && !strncmp("NX", nxclass, 2) && !validNXName(name) )697 if ( pFunc->checkNameSyntax && (nxclass != NULL) /* && !strncmp("NX", nxclass, 2) */ && !validNXName(name, 0) ) 688 698 { 689 699 sprintf(buffer, "ERROR: invalid characters in group name \"%s\"", name); … … 822 832 int rank, int64_t dimensions[]) 823 833 { 834 char buffer[256]; 824 835 pNexusFunction pFunc = handleToNexusFunc(fid); 836 if ( pFunc->checkNameSyntax && !validNXName(name, 0) ) 837 { 838 sprintf(buffer, "ERROR: invalid characters in dataset name \"%s\"", name); 839 NXReportError(buffer); 840 return NX_ERROR; 841 } 825 842 return LOCKED_CALL(pFunc->nxmakedata64(pFunc->pNexusData, name, datatype, rank, dimensions)); 826 843 } … … 843 860 int rank, int64_t dimensions[], int compress_type, int64_t chunk_size[]) 844 861 { 862 char buffer[256]; 845 863 pNexusFunction pFunc = handleToNexusFunc(fid); 864 if ( pFunc->checkNameSyntax && !validNXName(name, 0) ) 865 { 866 sprintf(buffer, "ERROR: invalid characters in dataset name \"%s\"", name); 867 NXReportError(buffer); 868 return NX_ERROR; 869 } 846 870 return LOCKED_CALL(pFunc->nxcompmakedata64 (pFunc->pNexusData, name, datatype, rank, dimensions, compress_type, chunk_size)); 847 871 } … … 945 969 int datalen, int iType) 946 970 { 971 char buffer[256]; 947 972 pNexusFunction pFunc = handleToNexusFunc(fid); 948 973 if (datalen > 1 && iType != NX_CHAR) … … 951 976 return NX_ERROR; 952 977 } 953 else 954 { 955 return LOCKED_CALL(pFunc->nxputattr(pFunc->pNexusData, name, data, datalen, iType)); 956 } 978 if ( pFunc->checkNameSyntax && !validNXName(name, 0) ) 979 { 980 sprintf(buffer, "ERROR: invalid characters in attribute name \"%s\"", name); 981 NXReportError(buffer); 982 return NX_ERROR; 983 } 984 return LOCKED_CALL(pFunc->nxputattr(pFunc->pNexusData, name, data, datalen, iType)); 957 985 } 958 986 … … 1001 1029 NXstatus NXmakenamedlink (NXhandle fid, CONSTCHAR *newname, NXlink* sLink) 1002 1030 { 1031 char buffer[256]; 1003 1032 pNexusFunction pFunc = handleToNexusFunc(fid); 1033 if ( pFunc->checkNameSyntax && !validNXName(newname, 0) ) 1034 { 1035 sprintf(buffer, "ERROR: invalid characters in link name \"%s\"", newname); 1036 NXReportError(buffer); 1037 return NX_ERROR; 1038 } 1004 1039 return LOCKED_CALL(pFunc->nxmakenamedlink(pFunc->pNexusData, newname, sLink)); 1005 1040 } -
trunk/src/nxxml.c
r1738 r1747 36 36 37 37 extern void *NXpData; 38 extern int validNXName(const char* name ); /* from napi.c */38 extern int validNXName(const char* name, int allow_colon); /* from napi.c */ 39 39 char *nxitrim(char *str); /* from napi.c */ 40 40 … … 259 259 assert(xmlHandle); 260 260 261 if (!validNXName(name ))261 if (!validNXName(name, 0)) 262 262 { 263 263 sprintf(buffer, "ERROR: invalid characters in group name \"%s\"", name); … … 428 428 xmlHandle = (pXMLNexus)fid; 429 429 assert(xmlHandle); 430 if (!validNXName(name ))430 if (!validNXName(name, 0)) 431 431 { 432 432 sprintf(buffer, "ERROR: invalid characters in dataset name \"%s\"", name); … … 506 506 xmlHandle = (pXMLNexus)fid; 507 507 assert(xmlHandle); 508 if (!validNXName(name ))508 if (!validNXName(name, 0)) 509 509 { 510 510 sprintf(buffer, "ERROR: invalid characters in dataset name \"%s\"", name); … … 1289 1289 NXstatus NXXputattr (NXhandle fid, CONSTCHAR *name, void *data, 1290 1290 int datalen, int iType){ 1291 char buffer[256]; 1291 1292 pXMLNexus xmlHandle = NULL; 1292 1293 mxml_node_t *current = NULL; … … 1295 1296 xmlHandle = (pXMLNexus)fid; 1296 1297 assert(xmlHandle); 1298 if (!validNXName(name, 1)) 1299 { 1300 sprintf(buffer, "ERROR: invalid characters in attribute name \"%s\"", name); 1301 NXReportError(buffer); 1302 return NX_ERROR; 1303 } 1297 1304 1298 1305 current = xmlHandle->stack[xmlHandle->stackPointer].current; … … 1896 1903 xmlHandle = (pXMLNexus)fid; 1897 1904 assert(xmlHandle); 1898 if (!validNXName(name ))1905 if (!validNXName(name, 0)) 1899 1906 { 1900 1907 sprintf(buffer, "ERROR: invalid characters in link name \"%s\"", name);
Note: See TracChangeset
for help on using the changeset viewer.
