From: Ingo Huerner Date: Wed, 18 Dec 2013 12:56:33 +0000 (+0100) Subject: File permission rework X-Git-Tag: v0.9.0~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7473d344e3010a0a1b4027c3a91bb1fe8d5df9ce;p=profile%2Fivi%2Fpersistence-client-library.git File permission rework --- diff --git a/include_protected/persistence_client_library_rc_table.h b/include_protected/persistence_client_library_rc_table.h index 77453f8..6cb0668 100644 --- a/include_protected/persistence_client_library_rc_table.h +++ b/include_protected/persistence_client_library_rc_table.h @@ -81,9 +81,9 @@ typedef struct _PersistenceDbContext_s typedef enum PersistencePermission_e_ { - PersistencePermission_ReadWrite = O_RDWR, - PersistencePermission_ReadOnly = O_RDONLY, - PersistencePermission_WriteOnly = O_WRONLY, + PersistencePermission_ReadWrite = 0, + PersistencePermission_ReadOnly = 1, + PersistencePermission_WriteOnly = 2, /** insert new entries here ... */ PersistencePermission_LastEntry /**< last entry */ diff --git a/src/persistence_client_library_file.c b/src/persistence_client_library_file.c index dada09e..fea9c68 100644 --- a/src/persistence_client_library_file.c +++ b/src/persistence_client_library_file.c @@ -162,7 +162,7 @@ int pclFileOpen(unsigned int ldbid, const char* resource_id, unsigned int user_n { if(shared_DB >= 0) // check valid database context { - int flags = dbContext.configKey.permission; + int flags = pclGetPosixPermission(dbContext.configKey.permission); // file will be opened writable, so check about data consistency if( (dbContext.configKey.permission != PersistencePermission_ReadOnly) @@ -430,7 +430,7 @@ int pclFileCreatePath(unsigned int ldbid, const char* resource_id, unsigned int { if(shared_DB >= 0) // check valid database context { - int flags = dbContext.configKey.permission; + int flags = pclGetPosixPermission(dbContext.configKey.permission); // file will be opened writable, so check about data consistency if( dbContext.configKey.permission != PersistencePermission_ReadOnly @@ -990,3 +990,27 @@ int pclCreateFileAndPath(const char* path) } + +int pclGetPosixPermission(PersistencePermission_e permission) +{ + int posixPerm = 0; + + switch(permission) + { + case PersistencePermission_ReadWrite: + posixPerm = O_RDWR; + break; + case PersistencePermission_ReadOnly: + posixPerm = O_RDONLY; + break; + case PersistencePermission_WriteOnly: + posixPerm = O_WRONLY; + break; + default: + posixPerm = O_RDONLY; + break; + } + + return posixPerm; +} + diff --git a/src/persistence_client_library_key.c b/src/persistence_client_library_key.c index 94f03d5..6f42dcc 100644 --- a/src/persistence_client_library_key.c +++ b/src/persistence_client_library_key.c @@ -292,7 +292,7 @@ int pclKeyHandleWriteData(int key_handle, unsigned char* buffer, int buffer_size { if(key_handle < MaxPersHandle) { - if(gKeyHandleArray[key_handle].info.configKey.permission != O_RDONLY) // don't write to a read only resource + if(gKeyHandleArray[key_handle].info.configKey.permission != PersistencePermission_ReadOnly) // don't write to a read only resource { if(PersistenceStorage_custom == gKeyHandleArray[key_handle].info.configKey.storage) { @@ -533,7 +533,7 @@ int pclKeyWriteData(unsigned int ldbid, const char* resource_id, unsigned int us if( (data_size >= 0) && (dbContext.configKey.type == PersistenceResourceType_key)) { - if(dbContext.configKey.permission != O_RDONLY) // don't write to a read only resource + if(dbContext.configKey.permission != PersistencePermission_ReadOnly) // don't write to a read only resource { // get hash value of data to verify storing hash_val_data = pclCrc32(hash_val_data, buffer, buffer_size); diff --git a/test/data/Data.tar.gz b/test/data/Data.tar.gz index 37a9f76..180fbc2 100644 Binary files a/test/data/Data.tar.gz and b/test/data/Data.tar.gz differ diff --git a/test/persistence_client_library_test.c b/test/persistence_client_library_test.c index 412042e..56037cf 100644 --- a/test/persistence_client_library_test.c +++ b/test/persistence_client_library_test.c @@ -1058,7 +1058,12 @@ static Suite * persistencyClientLib_suite() int main(int argc, char *argv[]) { - int nr_failed = 0; + int nr_failed = 0, + nr_run = 0, + fail = 0, + i = 0; + + TestResult** tResult; // assign application name strncpy(gTheAppId, "lt-persistence_client_library_test", MaxAppNameLen); @@ -1070,8 +1075,19 @@ int main(int argc, char *argv[]) #if 1 Suite * s = persistencyClientLib_suite(); SRunner * sr = srunner_create(s); - srunner_run_all(sr, CK_VERBOSE); + srunner_set_xml(sr, "/tmp/persistenceClientLibraryTest.xml"); + srunner_set_log(sr, "/tmp/persistenceClientLibraryTest.log"); + srunner_run_all(sr, /*CK_NORMAL*/ CK_VERBOSE); + nr_failed = srunner_ntests_failed(sr); + nr_run = srunner_ntests_run(sr); + + tResult = srunner_results(sr); + for(i = 0; i< nr_run; i++) + { + fail = tr_rtype(tResult[i]); // get status of each test + //printf("[%d] Fail: %d \n", i, fail); + } srunner_free(sr); #endif