diff --git a/src/sbbs3/js_filebase.c b/src/sbbs3/js_filebase.c index 1f2d779d03ee3860065c03753fd37b756e03f423..5e9a4f294d2cf4aeab033fc1c1d65b65b7fb850f 100644 --- a/src/sbbs3/js_filebase.c +++ b/src/sbbs3/js_filebase.c @@ -572,7 +572,7 @@ parse_file_properties(JSContext *cx, JSObject* obj, file_t* file, char** extdesc uint32_t cost = 0; if(!JS_ValueToECMAUint32(cx, val, &cost)) { free(cp); - JS_ReportError(cx, "Error converting adding '%s' property to Uint32", prop_name); + JS_ReportError(cx, "Error converting '%s' property to Uint32", prop_name); return SMB_FAILURE; } if((file->cost != 0 || cost != 0) && (result = smb_new_hfield(file, SMB_COST, sizeof(cost), &cost)) != SMB_SUCCESS) { @@ -581,6 +581,36 @@ parse_file_properties(JSContext *cx, JSObject* obj, file_t* file, char** extdesc return result; } } + prop_name = "added"; + if(JS_GetProperty(cx, obj, prop_name, &val) && !JSVAL_NULL_OR_VOID(val)) { + uint32_t t = 0; + if(!JS_ValueToECMAUint32(cx, val, &t)) { + free(cp); + JS_ReportError(cx, "Error converting '%s' property to Uint32", prop_name); + return SMB_FAILURE; + } + file->hdr.when_imported.time = t; + } + prop_name = "last_downloaded"; + if(JS_GetProperty(cx, obj, prop_name, &val) && !JSVAL_NULL_OR_VOID(val)) { + uint32_t t = 0; + if(!JS_ValueToECMAUint32(cx, val, &t)) { + free(cp); + JS_ReportError(cx, "Error converting '%s' property to Uint32", prop_name); + return SMB_FAILURE; + } + file->hdr.last_downloaded = t; + } + prop_name = "times_downloaded"; + if(JS_GetProperty(cx, obj, prop_name, &val) && !JSVAL_NULL_OR_VOID(val)) { + uint32_t t = 0; + if(!JS_ValueToECMAUint32(cx, val, &t)) { + free(cp); + JS_ReportError(cx, "Error converting '%s' property to Uint32", prop_name); + return SMB_FAILURE; + } + file->hdr.times_downloaded = t; + } if(JS_GetProperty(cx, obj, "anon", &val) && val == JSVAL_TRUE) file->hdr.attr |= FILE_ANONYMOUS;