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 } |