diff --git a/sefht.geany b/sefht.geany index 9e86ec7eb3a8718f1d03160042f3ea71e0a9e233..387a93e0521cbf25679afc9308f3dee5ee486adb 100644 --- a/sefht.geany +++ b/sefht.geany @@ -28,7 +28,7 @@ long_line_behaviour=1 long_line_column=72 [files] -current_page=10 +current_page=19 FILE_NAME_0=923;Sh;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fconfigure.ac;0;8 FILE_NAME_1=73;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2FMakefile.am;0;8 FILE_NAME_2=1143;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmain.c;0;8 @@ -49,16 +49,16 @@ FILE_NAME_16=1779;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fp FILE_NAME_17=851;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.h;0;8 FILE_NAME_18=14237;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.c;0;8 FILE_NAME_19=859;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.h;0;8 -FILE_NAME_20=852;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fstatus.h;0;8 +FILE_NAME_20=4600;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fstatus.h;0;8 FILE_NAME_21=839;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Flog.h;0;4 FILE_NAME_22=1070;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fmacro.h;0;8 FILE_NAME_23=1106;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fsefht.h;0;8 FILE_NAME_24=499;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8 -FILE_NAME_25=1510;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_cms.c;0;8 -FILE_NAME_26=3878;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8 -FILE_NAME_27=14714;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_node_fragment.c;0;8 -FILE_NAME_28=976;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_text.c;0;8 -FILE_NAME_29=6814;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8 +FILE_NAME_25=1085;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_cms.c;0;8 +FILE_NAME_26=3283;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8 +FILE_NAME_27=13617;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_node_fragment.c;0;8 +FILE_NAME_28=11068;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_text.c;0;8 +FILE_NAME_29=5744;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8 FILE_NAME_30=165;None;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftodo.txt;0;8 [VTE] diff --git a/src/lib/sefht/status.h b/src/lib/sefht/status.h index 8debe4c23a93deba81158c917fda22114b005c77..00d828913a3ba20ff06db1b91daa6c1dce89bb43 100644 --- a/src/lib/sefht/status.h +++ b/src/lib/sefht/status.h @@ -38,29 +38,29 @@ #ifdef LIB_SEFHT_COMPILATION #define succeed(STATUS) \ - ((STATUS != NULL) && (STATUS->status == SUCCESS)) + (((STATUS) != NULL) && ((STATUS)->status == SUCCESS)) #define failed(STATUS) \ - ((STATUS != NULL) && (STATUS->status != SUCCESS)) + (((STATUS) != NULL) && ((STATUS)->status != SUCCESS)) -#define unknown(STATUS) (STATUS == NULL) +#define unknown(STATUS) ((STATUS) == NULL) #define set_status(STATUS, ERROR, OFFSET, MESSAGE) \ do \ { \ - if (STATUS != NULL) \ + if ((STATUS) != NULL) \ { \ - STATUS->status = ERROR; \ - STATUS->errno_ = (ERROR == SUCCESS) ? 0: errno; \ - STATUS->file = __FILE__; \ - STATUS->function = __FUNCTION__; \ - STATUS->line = (unsigned long) (__LINE__ - OFFSET); \ - STATUS->message = MESSAGE; \ + (STATUS)->status = (ERROR); \ + (STATUS)->errno_ = ((ERROR) == SUCCESS) ? 0: errno; \ + (STATUS)->file = (__FILE__); \ + (STATUS)->function = (__FUNCTION__); \ + (STATUS)->line = (unsigned long) ((__LINE__)-(OFFSET));\ + (STATUS)->message = (MESSAGE); \ }; \ \ - if (MESSAGE != NULL) \ + if ((MESSAGE) != NULL) \ { \ - ERROR1 (MESSAGE); \ + ERROR1 ((MESSAGE)); \ } \ } \ while (FALSE) @@ -68,29 +68,38 @@ while (FALSE) #define set_status_(STATUS, ERROR, OFFSET, LENGTH, MESSAGE, ...) \ do \ { \ - if (STATUS != NULL) \ + if ((STATUS) != NULL) \ { \ - STATUS->status = ERROR; \ - STATUS->errno_ = (ERROR == SUCCESS) ? 0: errno; \ - STATUS->file = __FILE__; \ - STATUS->function = __FUNCTION__; \ - STATUS->line = (unsigned long) (__LINE__ - OFFSET); \ - STATUS->message = malloc (strlen(MESSAGE)+1 + LENGTH); \ - if (STATUS->message == NULL) \ + (STATUS)->status = (ERROR); \ + (STATUS)->errno_ = ((ERROR) == SUCCESS) ? 0: errno; \ + (STATUS)->file = (__FILE__); \ + (STATUS)->function = (__FUNCTION__); \ + (STATUS)->line = (unsigned long) ((__LINE__)-(OFFSET));\ + (STATUS)->message = malloc(strlen(MESSAGE)+1 + LENGTH);\ + if ((STATUS)->message == NULL) \ { \ - set_status (STATUS, E_ALLOC, OFFSET, \ + set_status ((STATUS), E_ALLOC, (OFFSET), \ "malloc failed while generating " \ "error message"); \ } \ - sprintf (STATUS->message, MESSAGE, __VA_ARGS__); \ + sprintf ((STATUS)->message, (MESSAGE), __VA_ARGS__); \ }; \ \ - ERROR_ (MESSAGE, __VA_ARGS__); \ + ERROR_ ((MESSAGE), __VA_ARGS__); \ } \ while (FALSE) #define set_success(STATUS) set_status(STATUS, SUCCESS, 0, NULL) +#define _status_preinit(STATUS) \ +do { \ + (STATUS).status = UNDEFINED; \ + (STATUS).errno_ = 0; \ + (STATUS).file = NULL; \ + (STATUS).line = 0; \ + (STATUS).message = NULL; \ +} \ +while (FALSE) #endif /* LIB_SEFHT_COMPILATION */ diff --git a/tests/test_cms.c b/tests/test_cms.c index 5366e3c75ffe362917960bbcf9996ac3c1ccb158..f35935b9b93fd62dcb97988e0a083357a20d01c5 100644 --- a/tests/test_cms.c +++ b/tests/test_cms.c @@ -40,7 +40,7 @@ START_TEST(test_cms) SH_Cms_free (cms); - status.status = UNDEFINED; + _status_preinit (status); cms = SH_Cms_new (&status); ck_assert_int_ne ((long int) cms, (long int) NULL); ck_assert_int_eq (status.status, SUCCESS); diff --git a/tests/test_data.c b/tests/test_data.c index dcf368e7fd5e5cbac69b17fe886ba99437e110f5..9687a5ddf6a7d5bd21ab09ffece0859d76de04f2 100644 --- a/tests/test_data.c +++ b/tests/test_data.c @@ -43,7 +43,7 @@ START_TEST(test_data) SH_Data_free (data); - status.status = UNDEFINED; + _status_preinit (status); data = SH_Data_new (&status); ck_assert_int_ne ((long int) data, (long int) NULL); ck_assert_int_eq (status.status, SUCCESS); @@ -101,7 +101,7 @@ START_TEST(test_data_register_page) /* success with error */ data->last_page = 1; - status.status = UNDEFINED; + _status_preinit (status); page = SH_Data_register_page (data, page4, &status); ck_assert_int_eq (page, 2); ck_assert_int_eq (status.status, SUCCESS); @@ -115,7 +115,7 @@ START_TEST(test_data_register_page) /* fail with error */ data->page_n = SIZE_MAX; - status.status = UNDEFINED; + _status_preinit (status); page = SH_Data_register_page (data, page5, &status); ck_assert_int_eq (page, PAGE_ERR); ck_assert_int_eq (status.status, E_DOMAIN); @@ -127,7 +127,7 @@ START_TEST(test_data_register_page) data->page_n = 2; data->last_page = PAGE_MAX; - status.status = UNDEFINED; + _status_preinit (status); page = SH_Data_register_page (data, page6, &status); ck_assert_int_eq (page, PAGE_ERR); ck_assert_int_eq (status.status, E_DOMAIN); diff --git a/tests/test_node_fragment.c b/tests/test_node_fragment.c index 42a42cc1ed58aa7a30b51645558923c98cf363a2..d7c14a1ec6d6d2bea92a06ea23ddeda1da0f18de 100644 --- a/tests/test_node_fragment.c +++ b/tests/test_node_fragment.c @@ -50,7 +50,7 @@ START_TEST(test_node_fragment) SH_Fragment_free (fragment); /* valid tag - error */ - status.status = UNDEFINED; + _status_preinit (status); fragment = SH_NodeFragment_new (tag, data, &status); ck_assert_int_ne ((long int) fragment, (long int) NULL); ck_assert_int_eq (status.status, SUCCESS); @@ -89,7 +89,7 @@ START_TEST(test_node_fragment_copy) SH_Fragment_free (copy); /* with error */ - status.status = UNDEFINED; + _status_preinit (status); copy = SH_NodeFragment_copy (((struct SH_NodeFragment *) fragment), &status); ck_assert_int_eq (status.status, SUCCESS); @@ -187,7 +187,7 @@ START_TEST(test_node_fragment_deepcopy) SH_Fragment_free (copy); /* with error */ - status.status = UNDEFINED; + _status_preinit (status); copy = SH_Fragment_copy (fragment, &status); ck_assert_int_eq (status.status, SUCCESS); @@ -234,7 +234,7 @@ START_TEST(test_node_fragment_tag) /* error */ fragment = SH_NodeFragment_new (tag2, data, NULL); - status.status = UNDEFINED; + _status_preinit (status); tag = SH_NodeFragment_get_tag (((struct SH_NodeFragment *) fragment), &status); ck_assert_str_eq (tag, tag2); @@ -275,7 +275,7 @@ START_TEST(test_node_fragment_child) /* with error */ ck_assert_int_eq (((struct SH_NodeFragment *) parent)->child_n, 1); - status.status = UNDEFINED; + _status_preinit (status); boolean = SH_NodeFragment_append_child (((struct SH_NodeFragment *) parent), child2, &status); ck_assert_int_eq (boolean, TRUE); @@ -317,13 +317,13 @@ START_TEST(test_node_fragment_get_child) ck_assert_ptr_eq (NULL, child2); /* with error */ - status.status = UNDEFINED; + _status_preinit (status); child2 = SH_NodeFragment_get_child (((struct SH_NodeFragment *) parent), 0, &status); ck_assert_ptr_eq (child1, child2); ck_assert_int_eq (status.status, SUCCESS); - status.status = UNDEFINED; + _status_preinit (status); child2 = SH_NodeFragment_get_child (((struct SH_NodeFragment *) parent), 1, &status); ck_assert_ptr_eq (NULL, child2); @@ -464,7 +464,7 @@ START_TEST(test_node_fragment_html) SH_NodeFragment_append_child (((struct SH_NodeFragment *) fragment1), fragment2, NULL); - status.status = UNDEFINED; + _status_preinit (status); text = SH_Fragment_to_html (fragment1, INLINE, 0, 1, INDENT_TEXT, &status); string = SH_Text_get_string (text, 0, SIZE_MAX, &length, NULL); @@ -472,7 +472,7 @@ START_TEST(test_node_fragment_html) free (string); ck_assert_int_eq (status.status, SUCCESS); - status.status = UNDEFINED; + _status_preinit (status); text = SH_Fragment_to_html (fragment1, WRAP, 0, 1, INDENT_TEXT, &status); string = SH_Text_get_string (text, 0, SIZE_MAX, &length, NULL); diff --git a/tests/test_text.c b/tests/test_text.c index e05ca70495b82c9b6a869e18958bf2cafae38ac5..986ae71cfd80ff8c49e05a7ddaf896a9407b03fd 100644 --- a/tests/test_text.c +++ b/tests/test_text.c @@ -52,7 +52,7 @@ START_TEST(test_text) SH_Text_free (text); - status.status = UNDEFINED; + _status_preinit (status); text = SH_Text_new (&status); ck_assert_int_ne ((long int) text, (long int) NULL); ck_assert_int_eq (status.status, SUCCESS); @@ -81,7 +81,7 @@ START_TEST(test_text_string) /* with error */ - status.status = UNDEFINED; + _status_preinit (status); text = SH_Text_new_from_string ("12345", &status); ck_assert_int_ne ((long int) text, (long int) NULL); ck_assert_int_eq (status.status, SUCCESS); @@ -118,7 +118,7 @@ START_TEST (test_text_copy) SH_Text_free (copy); /* with error */ - status.status = UNDEFINED; + _status_preinit (status); copy = SH_Text_copy (text, &status); ck_assert_int_eq (status.status, SUCCESS); ck_assert_ptr_ne (copy, NULL); @@ -148,7 +148,7 @@ START_TEST(test_text_get_length) ck_assert_int_eq (length, 0); /* length == 0 - with error */ - status.status = UNDEFINED; + _status_preinit (status); length = SH_Text_get_length (text, &status); ck_assert_int_eq (length, 0); ck_assert_int_eq (status.status, SUCCESS); @@ -164,7 +164,7 @@ START_TEST(test_text_get_length) ck_assert_int_eq (length, SIZE_MAX); /* length == SIZE_MAX - with error */ - status.status = UNDEFINED; + _status_preinit (status); length = SH_Text_get_length (text, &status); ck_assert_int_eq (length, SIZE_MAX); ck_assert_int_eq (status.status, SUCCESS); @@ -176,7 +176,7 @@ START_TEST(test_text_get_length) ck_assert_int_eq (length, SIZE_MAX); /* length > SIZE_MAX - with error */ - status.status = UNDEFINED; + _status_preinit (status); length = SH_Text_get_length (text, &status); ck_assert_int_eq (length, SIZE_MAX); ck_assert_int_eq (status.status, E_DOMAIN); @@ -212,7 +212,7 @@ START_TEST(test_text_get_char) /* success - with error */ for (i = 0; i < 12; i++) { - status.status = UNDEFINED; + _status_preinit (status); c = SH_Text_get_char (text, i, &status); ck_assert_ptr_ne (c, NULL); ck_assert_int_eq (*c, 97 + i); @@ -221,7 +221,7 @@ START_TEST(test_text_get_char) } /* wrong index - with error */ - status.status = UNDEFINED; + _status_preinit (status); c = SH_Text_get_char (text, 13, &status); ck_assert_ptr_eq (c, NULL); ck_assert_int_eq (status.status, E_VALUE); @@ -270,7 +270,7 @@ START_TEST(test_text_get_string) /* single segment - with error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_string (text, 59, 8, &length, &status); ck_assert_str_eq (result, "<=>?@ABC"); ck_assert_int_eq (length, 8); @@ -278,7 +278,7 @@ START_TEST(test_text_get_string) free (result); /* multiple segment - with error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_string (text, 47, 43, &length, &status); ck_assert_str_eq (result, "0123456789:;<=>?@" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); @@ -287,7 +287,7 @@ START_TEST(test_text_get_string) free (result); /* pass over end - with error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_string (text, 96, 10, &length, &status); ck_assert_str_eq (result, "abc"); ck_assert_int_eq (length, 3); @@ -295,7 +295,7 @@ START_TEST(test_text_get_string) free (result); /* out of range - without error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_string (text, 99, 0, &length, &status); ck_assert_ptr_eq (result, NULL); ck_assert_int_eq (length, 0); @@ -345,7 +345,7 @@ START_TEST(test_text_get_range) /* single segment - with error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_range (text, 59, 67, &length, &status); ck_assert_str_eq (result, "<=>?@ABC"); ck_assert_int_eq (length, 8); @@ -353,7 +353,7 @@ START_TEST(test_text_get_range) free (result); /* multiple segment - with error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_range (text, 47, 90, &length, &status); ck_assert_str_eq (result, "0123456789:;<=>?@" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); @@ -362,7 +362,7 @@ START_TEST(test_text_get_range) free (result); /* pass over end - with error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_range (text, 96, 106, &length, &status); ck_assert_str_eq (result, "abc"); ck_assert_int_eq (length, 3); @@ -370,7 +370,7 @@ START_TEST(test_text_get_range) free (result); /* out of range - without error */ - status.status = UNDEFINED; + _status_preinit (status); result = SH_Text_get_range (text, 99, 99, &length, &status); ck_assert_ptr_eq (result, NULL); ck_assert_int_eq (length, 0); @@ -401,7 +401,7 @@ START_TEST (test_text_append) free (string); /* append_string - with error */ - status.status = UNDEFINED; + _status_preinit (status); boolean = SH_Text_append_string (text2, "Text2", &status); ck_assert_int_eq (boolean, TRUE); ck_assert_int_eq (status.status, SUCCESS); @@ -420,7 +420,7 @@ START_TEST (test_text_append) free (string); /* append_text - with error */ - status.status = UNDEFINED; + _status_preinit (status); boolean = SH_Text_append_text (text1, text2, &status); ck_assert_int_eq (boolean, TRUE); ck_assert_int_eq (status.status, SUCCESS); diff --git a/tests/test_validator.c b/tests/test_validator.c index caddb4216f151c18f6caff9e5de44243124062d8..73072bcc42036250f5040f01d56b466cc64a814a 100644 --- a/tests/test_validator.c +++ b/tests/test_validator.c @@ -52,7 +52,7 @@ START_TEST(test_validator) SH_Validator_free (validator); - status.status = UNDEFINED; + _status_preinit (status); validator = SH_Validator_new (&status); ck_assert_int_ne ((long int) validator, (long int) NULL); ck_assert_int_eq (status.status, SUCCESS); @@ -163,7 +163,7 @@ START_TEST(test_validator_tag) validator = SH_Validator_new (NULL); /* success with error */ - status.status = UNDEFINED; + _status_preinit (status); tag = SH_Validator_register_tag (validator, tag4, &status); ck_assert_int_eq (tag, 1); ck_assert_int_eq (status.status, SUCCESS); @@ -199,7 +199,7 @@ START_TEST(test_validator_tag) free (tagN); - status.status = UNDEFINED; + _status_preinit (status); tag = SH_Validator_register_tag (validator, tag5, &status); ck_assert_int_eq (tag, TAG_ERR); ck_assert_int_eq (status.status, E_DOMAIN); @@ -213,7 +213,7 @@ START_TEST(test_validator_tag) validator->tag_n = 1; validator->last_tag = TAG_MAX; - status.status = UNDEFINED; + _status_preinit (status); tag = SH_Validator_register_tag (validator, tag6, &status); ck_assert_int_eq (tag, TAG_ERR); ck_assert_int_eq (status.status, E_DOMAIN);