/** Both import and capture jobs uses this */ static const char * _camera_request_image_path(const dt_camera_t *camera, void *data) { struct dt_camera_shared_t *shared; shared = (struct dt_camera_shared_t *)data; return dt_import_session_path(shared->session, FALSE); }
const char * dt_import_session_filename(struct dt_import_session_t *self, gboolean current) { const char *path; char *fname, *previous_fname; char *pattern; if (current && self->current_filename != NULL) return self->current_filename; /* expand next filename */ g_free((void *)self->current_filename); pattern = _import_session_filename_pattern(); if (pattern == NULL) { fprintf(stderr,"[import_session] Failed to get session filaname pattern.\n"); return NULL; } dt_variables_expand(self->vp, pattern, TRUE); /* verify that expanded path and filename yields a unique file */ path = dt_import_session_path(self, TRUE); previous_fname = fname = g_build_path(G_DIR_SEPARATOR_S, path, dt_variables_get_result(self->vp), (char *)NULL); if (g_file_test(fname, G_FILE_TEST_EXISTS) == TRUE) { fprintf(stderr, "[import_session] File %s exists.\n", fname); do { /* file exists, yield a new filename */ dt_variables_expand(self->vp, pattern, TRUE); fname = g_build_path(G_DIR_SEPARATOR_S, path, dt_variables_get_result(self->vp), (char *)NULL); fprintf(stderr, "[import_session] Testing %s.\n", fname); /* check if same filename was yielded as before */ if (strcmp(previous_fname ,fname) == 0) { g_free(previous_fname); g_free(fname); dt_control_log(_("couldn't expand to a unique filename for session, please check your import session settings.")); return NULL; } g_free(previous_fname); previous_fname = fname; } while (g_file_test(fname, G_FILE_TEST_EXISTS) == TRUE); } g_free(previous_fname); g_free(pattern); self->current_filename = g_strdup(dt_variables_get_result(self->vp)); fprintf(stderr, "[import_session] Using filename %s.\n", self->current_filename); return self->current_filename; }
static const char *_camera_request_image_path(const dt_camera_t *camera, time_t *exif_time, void *data) { struct dt_camera_shared_t *shared; shared = (struct dt_camera_shared_t *)data; if(exif_time) dt_import_session_set_exif_time(shared->session, *exif_time); return dt_import_session_path(shared->session, FALSE); }
void dt_import_session_set_name(struct dt_import_session_t *self, const char *name) { /* free previous jobcode name */ g_free((void *)self->vp->jobcode); self->vp->jobcode = g_strdup(name); /* setup new filmroll if path has changed */ dt_import_session_path(self, FALSE); }
static const char *_camera_request_image_path(const dt_camera_t *camera, void *data) { struct dt_capture_t *lib = (dt_capture_t *)data; return dt_import_session_path(lib->session, FALSE); }