static void print_all_job(t_job *job, int flag) { t_process *process; while (job != NULL) { if (flag) { printf("[%i]%c\t%i %s\t\t%s\n", job->id, check_last_use(job->last_use), job->head_process->pid, check_status1(job->head_process), job->commandline); process = job->head_process->next; while (process != NULL) { printf("\t%i \t\t%s\n", process->pid, job->commandline); process = process->next; } } else printf("[%i]%c\t%s\t\t%s\n", job->id, check_last_use(job->last_use), check_status1(job->head_process), job->commandline); job = job->next; } }
static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; int res; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } camera->pl->context = context; if(check_last_use(camera) == GP_ERROR) { camera->pl->context = NULL; return GP_ERROR; } switch (type) { case GP_FILE_TYPE_PREVIEW: res = dc3200_get_data (camera, &data, &data_len, CMD_GET_PREVIEW, folder, filename); break; case GP_FILE_TYPE_NORMAL: res = dc3200_get_data (camera, &data, &data_len, CMD_GET_FILE, folder, filename); break; default: camera->pl->context = NULL; return (GP_ERROR_NOT_SUPPORTED); } if (res < 0) { camera->pl->context = NULL; return (res); } if (data == NULL || data_len < 1) { camera->pl->context = NULL; return GP_ERROR; } gp_file_append (file, (char *)data, data_len); free(data); camera->pl->context = NULL; return (dc3200_keep_alive(camera)); }
static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; int res; char file[1024]; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } if(check_last_use(camera) == GP_ERROR) { return GP_ERROR; } if(!folder) { return GP_ERROR; } strcpy(file, folder); if(folder[strlen(folder)-1] != '\\' || folder[strlen(folder)-1] != '/') strcat(file, "\\"); strcat(file, filename); /* get file list data */ res = dc3200_get_data (camera, &data, &data_len, CMD_LIST_FILES, file, NULL); if (res == GP_ERROR) { return GP_ERROR; } /* check the data length */ if(data_len%20 != 0 || data_len < 1) { /* there is a problem */ return GP_ERROR; } if(data == NULL) { return GP_ERROR; } /* get the file length && type and stuff */ info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; info->file.size = bytes_to_l(data[19], data[18], data[17], data[16]); strcpy (info->file.type, GP_MIME_JPEG); info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_JPEG); free(data); return (dc3200_keep_alive(camera)); }
static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; unsigned char *ptr_data_buff; char filename[13]; int res, i; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } if(check_last_use(camera) == GP_ERROR) { return GP_ERROR; } /* get file list data */ res = dc3200_get_data (camera, &data, &data_len, CMD_LIST_FILES, folder, NULL); if (res == GP_ERROR) { return GP_ERROR; } /* check the data length */ if(data_len%20 != 0 || data_len < 1) { return GP_ERROR; } if(data == NULL) { return GP_ERROR; } /* add files to the list */ ptr_data_buff = data; i = 0; while(i < data_len) { /* files don't have 0x10 in their attribute */ if(ptr_data_buff[11] & 0x10) { ptr_data_buff += 20; i += 20; continue; } /* copy the first 8 bytes of filename */ strncpy(filename, (char *)ptr_data_buff, 8); filename[8] = 0; /* add dot */ strcat(filename, "."); /* copy extension, last 3 bytes*/ strncat(filename, (char *)ptr_data_buff+8, 3); if(!strstr(filename, ".JPG") && !strstr(filename, ".jpg")) { ptr_data_buff += 20; i += 20; continue; } /* append file to the list */ gp_list_append(list, filename, NULL); ptr_data_buff += 20; i += 20; } free(data); return (dc3200_keep_alive(camera)); }
static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; unsigned char *ptr_data_buff; char filename[13], *ptr; int res, i; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } if(check_last_use(camera) == GP_ERROR) { return GP_ERROR; } /* get file list data */ res = dc3200_get_data (camera, &data, &data_len, CMD_LIST_FILES, folder, NULL); if (res == GP_ERROR) { return GP_ERROR; } /* check the data length, each record is 20 bytes */ if(data_len%20 != 0 || data_len < 1) { return GP_ERROR; } if (data == NULL) { return GP_ERROR; } /* add directories to the list */ ptr_data_buff = data; i = 0; while(i < data_len) { /* directories have 0x10 in their attribute */ if(!(ptr_data_buff[11] & 0x10)) { ptr_data_buff += 20; i += 20; continue; } /* skip directories starting with . */ if(ptr_data_buff[0] == '.') { ptr_data_buff += 20; i += 20; continue; } /* copy the filename */ strncpy(filename, (char *)ptr_data_buff, sizeof(filename)); /* chop off the trailing spaces and null terminate */ ptr = strchr(filename, 0x20); if(ptr) ptr[0] = 0; /* in case of long directory */ filename[12] = 0; /* append dir to the list */ gp_list_append(list, filename, NULL); ptr_data_buff += 20; i += 20; } free (data); return (dc3200_keep_alive (camera)); }