int update(Flash* flash, const char* obj_path) { pid_t pid; int status=-1; pid = fork(); if (pid == 0) { const gchar* path = flash_get_flasher_path(flash); const gchar* name = flash_get_flasher_name(flash); const gchar* inst = flash_get_flasher_instance(flash); const gchar* filename = flash_get_filename(flash); status = execl(path, name, inst, filename, obj_path, NULL); return status; } return 0; }
static gboolean on_done(Flash *flash, GDBusMethodInvocation *invocation, gpointer user_data) { int rc = 0; SharedResource *lock = object_get_shared_resource((Object*)user_data); shared_resource_get_lock(lock); flash_set_status(flash, "Flash Done"); flash_complete_done(flash,invocation); printf("Flash Done. Clearing locks\n"); shared_resource_set_lock(lock,false); shared_resource_set_name(lock,""); const gchar* filename = flash_get_filename(flash); rc = unlink(filename); if(rc != 0 ) { printf("ERROR: Unable to delete file %s (%d)\n",filename,rc); } return TRUE; }