src/server/util/util.c

changeset 104
a8acbb12f27c
parent 103
d3b514e2ddbd
child 106
b122f34ddc80
equal deleted inserted replaced
103:d3b514e2ddbd 104:a8acbb12f27c
904 util_gmtime(const time_t *clock, struct tm *res) 904 util_gmtime(const time_t *clock, struct tm *res)
905 { 905 {
906 return gmtime_r(clock, res); 906 return gmtime_r(clock, res);
907 } 907 }
908 908
909 int util_isdate(char *str) {
910 sstr_t datestr = sstr(str);
911 sstr_t example = S("Sun, 06 Nov 1994 08:49:37 GMT");
912
913 if(datestr.length != example.length) {
914 return 0;
915 }
916
917 for(int i=0;i<datestr.length;i++) {
918 char e = example.ptr[i];
919 if(isdigit(e)) {
920 if(!isdigit(datestr.ptr[i])) {
921 return 0;
922 }
923 } else if(e == ' ') {
924 if(datestr.ptr[i] != ' ') {
925 return 0;
926 }
927 } else if(e == ',') {
928 if(datestr.ptr[i] != ',') {
929 return 0;
930 }
931 } else if(e == ':') {
932 if(datestr.ptr[i] != ':') {
933 return 0;
934 }
935 }
936 }
937
938 if(!sstrsuffix(datestr, S("GMT"))) {
939 return 0;
940 }
941
942 return 1;
943 }
944
945
946 /* ------------------------- util_mime_separator -------------------------- */
947
948
949 NSAPI_PUBLIC int util_mime_separator(char *sep)
950 {
951 int size = 35; // documented in nsapi.h
952 int pos = 0;
953
954 sep[pos++] = CR;
955 sep[pos++] = LF;
956 sep[pos++] = '-';
957 sep[pos++] = '-';
958
959 int r[6];
960 for(int i=0;i<6;i++) {
961 r[i] = rand() % 10000;
962 }
963 pos += snprintf(
964 sep+4,
965 size-4,
966 "X%04x%04x%04x%04x%04x%04xE",
967 r[0],
968 r[1],
969 r[2],
970 r[3],
971 r[4],
972 r[5]);
973
974 return pos;
975 }

mercurial