copy_attrs(struct odes *dest, struct odes *src)
{
for (struct oattr *a = src->attrs ; a; a=a->next)
- for (struct oattr *aa = a; aa; aa=aa->same)
- obj_add_attr(dest, aa->attr, aa->val);
+ if (a->attr < OBJ_ATTR_SON)
+ for (struct oattr *aa = a; aa; aa=aa->same)
+ obj_add_attr(dest, aa->attr, aa->val);
}
static void
if (!fb)
return;
- // FIXME: Check contest time
- // FIXME: Keep history of submitted tasks
-
task_lock_status(c);
struct odes *tasko = task_status_find_task(c, task, 1);
struct odes *parto = task_status_find_part(tasko, pname, 1);
struct odes *vero = obj_add_son(parto, 'V' + OBJ_ATTR_SON);
obj_set_attr_num(vero, 'V', ++last_ver);
obj_set_attr_num(vero, 'T', time(NULL));
+ obj_set_attr_num(vero, 'L', obj_find_anum(c->request, 'S', 0));
obj_set_attr(vero, 'S', "submitted");
obj_set_attr(vero, 'X', ext);
- // FIXME: hash
- // FIXME: remove old versions from the status file?
task_submit_part(c->user, tname, pname, ext, last_ver, fb);
obj_set_attr_num(parto, 'V', last_ver);
task_unlock_status(c, 1);