diff --git a/camlibs/canon/canon.c b/camlibs/canon/canon.c index 31f940316..d8c0bd7b5 100644 --- a/camlibs/canon/canon.c +++ b/camlibs/canon/canon.c @@ -90,40 +90,16 @@ char *models_serialandUSB[] = { int camera_id(char *id) { - strcpy(id, "canon"); + strcpy(id, "canon"); - return GP_OK; -} - -int camera_file_put (Camera *camera, CameraFile *file) -{ - - return GP_ERROR; -} - -int camera_capture(Camera *camera, CameraFile *file, CameraCaptureInfo *info) -{ - - return GP_ERROR; -} - -int camera_config_get (Camera *camera, CameraWidget *window) -{ - - return GP_ERROR; -} - -int camera_config_set (Camera *camera, CameraSetting *setting, int count) -{ - - return GP_ERROR; + return GP_OK; } int camera_manual(Camera *camera, CameraText *manual) { - strcpy(manual->text, "Manual Not Available"); + strcpy(manual->text, "Manual Not Available"); - return GP_OK; + return GP_OK; } int camera_abilities(CameraAbilities *abilities, int *count) @@ -133,7 +109,6 @@ int camera_abilities(CameraAbilities *abilities, int *count) CameraAbilities a; strcpy(a.model, ""); - a.port = GP_PORT_SERIAL | GP_PORT_USB; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; @@ -147,6 +122,7 @@ int camera_abilities(CameraAbilities *abilities, int *count) a.file_put = 0; i=0; + a.port = GP_PORT_SERIAL | GP_PORT_USB; while (icamlib_data; switch_camera_off(); + + free(cs); return GP_OK; } -int canon_get_batt_status(int *pwr_status, int *pwr_source) { - if (!check_readiness()) - return -1; +int canon_get_batt_status(int *pwr_status, int *pwr_source) +{ + if (!check_readiness()) + return -1; - return psa50_get_battery(pwr_status, pwr_source); + return psa50_get_battery(pwr_status, pwr_source); } - #if 0 static void canon_set_owner(GtkWidget *win,GtkWidget *owner) { - char *entry; + char *entry; - gp_camera_status(NULL, "Setting owner name."); - entry = gtk_entry_get_text(GTK_ENTRY(owner)); - debug_message("New owner name: %s\n",entry); - psa50_set_owner_name(entry); + gp_camera_status(NULL, "Setting owner name."); + entry = gtk_entry_get_text(GTK_ENTRY(owner)); + debug_message("New owner name: %s\n",entry); + psa50_set_owner_name(entry); } #endif char *camera_model_string() { - if (!check_readiness()) - return "Camera unavailable"; - - switch (camera_data.model) { - case CANON_PS_A5: - return "Powershot A5"; - case CANON_PS_A5_ZOOM: - return "Powershot A5 Zoom"; - case CANON_PS_A50: - return "Powershot A50"; - case CANON_PS_A70: - return "Powershot Pro70"; - case CANON_PS_S10: - return "Powershot S10"; - case CANON_PS_S20: - return "Powershot S20"; - default: - return "Unknown model !"; - } + if (!check_readiness()) + return "Camera unavailable"; + switch (camera_data.model) { + case CANON_PS_A5: + return "Powershot A5"; + case CANON_PS_A5_ZOOM: + return "Powershot A5 Zoom"; + case CANON_PS_A50: + return "Powershot A50"; + case CANON_PS_A70: + return "Powershot Pro70"; + case CANON_PS_S10: + return "Powershot S10"; + case CANON_PS_S20: + return "Powershot S20"; + case CANON_PS_S100: + return "Powershot S100 / DIGITAL IXUS"; + default: + return "Unknown model !"; + } } static int update_disk_cache(void) { - char root[10]; /* D:\ or such */ - char *disk; + char root[10]; /* D:\ or such */ + char *disk; - if (cached_disk) return 1; - if (!check_readiness()) return 0; - disk = psa50_get_disk(); - if (!disk) { - gp_camera_status(NULL, "No response"); - return 0; - } - strcpy(cached_drive,disk); - sprintf(root,"%s\\",disk); - if (!psa50_disk_info(root,&cached_capacity,&cached_available)) { - gp_camera_status(NULL, "No response"); - return 0; - } - cached_disk = 1; - return 1; + if (cached_disk) return 1; + if (!check_readiness()) return 0; + disk = psa50_get_disk(); + if (!disk) { + gp_camera_status(NULL, "No response"); + return 0; + } + strcpy(cached_drive,disk); + sprintf(root,"%s\\",disk); + if (!psa50_disk_info(root,&cached_capacity,&cached_available)) { + gp_camera_status(NULL, "No response"); + return 0; + } + cached_disk = 1; + + return 1; } static int is_image(const char *name) { - const char *pos; + const char *pos; - pos = strchr(name,'.'); - if (!pos) return 0; - return !strcmp(pos,".JPG"); + pos = strchr(name,'.'); + if (!pos) return 0; + return !strcmp(pos,".JPG"); } /* This function is only used by A5 */ @@ -546,6 +528,7 @@ static int get_all(struct psa50_dir *entry) { for (; entry->name; entry++) if (!get_all(entry)) return 0; return 1; + } #endif @@ -1003,7 +986,7 @@ static char *canon_get_picture(int picture_number, int thumbnail, int *size) char path[300]; char attribs; char file[300], dir[300]; - int size2,j; + int j; void *ptr; @@ -1056,8 +1039,6 @@ static char *canon_get_picture(int picture_number, int thumbnail, int *size) if (!picture_number || picture_number > cached_images) { gp_camera_status(NULL, "Invalid index"); free(image); -/* if (command_line_mode==1) - psa50_end(); */ return NULL; } strcpy(path,cached_drive); @@ -1071,23 +1052,9 @@ static char *canon_get_picture(int picture_number, int thumbnail, int *size) if (thumbnail) { ptr=image; if ( (image = psa50_get_thumbnail(path,size)) == NULL) { -/* if (command_line_mode == 1) - psa50_end(); */ free(ptr); return NULL; } - /* we count the byte returned until the end of the jpeg data - which is FF D9 */ - - /* 24/07/2000 (pm) I've commented out following code - do we really need that now that we use exif to parse data ? - */ - -/* for(size2=1;size2data = data; strcpy(preview->type, "image/jpeg"); + + /* we count the byte returned until the end of the jpeg data + which is FF D9 */ + /* It would be prettier to get that info from the exif tags */ + + for(size=1;sizesize = buflen; pick_nth(index,path,&attribs); j = strrchr(path, '\\') - path; i=0; + if (A5==0) { + filename[i++]='t'; + filename[i++]='h'; + filename[i++]='u'; + filename[i++]='m'; + filename[i++]='b'; + filename[i++]='_'; + } while(path[j+1] != '\0') { filename[i] = tolower(path[j+1]); i++; j++; } + filename[i]='\0'; snprintf(preview->name, sizeof(preview->name), "%s", @@ -1190,8 +1176,6 @@ int camera_file_count(Camera *camera) case CANON_PS_A5_ZOOM: return cached_images/2; /* Odd is pictures even is thumbs */ default: -/* if (command_line_mode==1) - psa50_end(); */ return cached_images; } }; @@ -1203,32 +1187,36 @@ int camera_file_count(Camera *camera) */ int camera_init(Camera *camera, CameraInit *init) { - char fname[1024]; - FILE *conf; + char fname[1024]; + FILE *conf; + CanonDataStruct *cs; - /* First, set up all the function pointers */ - camera->functions->id = camera_id; - camera->functions->abilities = camera_abilities; - camera->functions->init = camera_init; - camera->functions->exit = camera_exit; - camera->functions->folder_list= camera_folder_list; - camera->functions->folder_set = camera_folder_set; - camera->functions->file_count = camera_file_count; - camera->functions->file_get = camera_file_get; - camera->functions->file_get_preview = camera_file_get_preview; - camera->functions->file_put = camera_file_put; - camera->functions->file_delete= camera_file_delete; - camera->functions->config_get = camera_config_get; - camera->functions->config_set = camera_config_set; - camera->functions->capture = camera_capture; - camera->functions->summary = camera_summary; - camera->functions->manual = camera_manual; - camera->functions->about = camera_about; + /* First, set up all the function pointers */ + camera->functions->id = camera_id; + camera->functions->abilities = camera_abilities; + camera->functions->init = camera_init; + camera->functions->exit = camera_exit; + camera->functions->folder_list= camera_folder_list; + camera->functions->folder_set = camera_folder_set; + camera->functions->file_count = camera_file_count; + camera->functions->file_get = camera_file_get; + camera->functions->file_get_preview = camera_file_get_preview; + camera->functions->file_put = camera_file_put; + camera->functions->file_delete= camera_file_delete; + camera->functions->config_get = camera_config_get; + camera->functions->config_set = camera_config_set; + camera->functions->capture = camera_capture; + camera->functions->summary = camera_summary; + camera->functions->manual = camera_manual; + camera->functions->about = camera_about; - gphoto2_debug = init->debug; - fprintf(stderr,"canon_initialize()\n"); - /* Default speed */ - camera_data.speed = 9600; + cs = (CanonDataStruct*)malloc(sizeof(CanonDataStruct)); + camera->camlib_data = cs; + + gphoto2_debug = init->debug; + fprintf(stderr,"canon_initialize()\n"); + /* Default speed */ + camera_data.speed = 9600; setFileName(fname); if ((conf = fopen(fname, "r"))) { @@ -1360,11 +1348,10 @@ int camera_summary(Camera *camera, CameraText *summary) case CANON_PS_A70: model = "Canon Powershot A70"; break; case CANON_PS_S10: model = "Canon Powershot S10"; break; case CANON_PS_S20: model = "Canon Powershot S20"; break; + case CANON_PS_S100: model = "Canon Powershot S100 / DIGITAL IXUS"; break; } sprintf(summary->text,"%s\nDrive %s\n%11s bytes total\n%11s bytes available\n", model,cached_drive,a,b); -/* if (!(camera_data.model == CANON_PS_A5 - || camera_data.model == CANON_PS_A5_ZOOM) && command_line_mode==1) psa50_end(); */ return GP_OK; } @@ -1372,13 +1359,14 @@ int camera_summary(Camera *camera, CameraText *summary) int camera_about(Camera *camera, CameraText *about) { - strcpy(about->text, "Canon PowerShot series driver by\n" - "Wolfgang G. Reissnegger,\n" - "Werner Almesberger,\n" - "Edouard Lafargue,\n" - "Philippe Marzouk,\n" - "A5 additions by Ole W. Saastad\n" - ); + strcpy(about->text, + "Canon PowerShot series driver by\n" + "Wolfgang G. Reissnegger,\n" + "Werner Almesberger,\n" + "Edouard Lafargue,\n" + "Philippe Marzouk,\n" + "A5 additions by Ole W. Saastad\n" + ); return GP_OK; } @@ -1387,70 +1375,69 @@ int camera_about(Camera *camera, CameraText *about) int camera_file_delete(Camera *camera, int picture_number) { - char path[300]; - char file[300], dir[300], atrs; - int j; + char path[300]; + char file[300], dir[300], atrs; + int j; - /*clear_readiness();*/ - if (!check_readiness()) { - return 0; - } - if (!(camera_data.model == CANON_PS_A5 || - camera_data.model == CANON_PS_A5_ZOOM)) { /* this is tested only on powershot A50 */ + /*clear_readiness();*/ + if (!check_readiness()) { + return 0; + } + if (!(camera_data.model == CANON_PS_A5 || + camera_data.model == CANON_PS_A5_ZOOM)) { /* this is tested only on powershot A50 */ - if (!update_dir_cache()) { - gp_camera_status(NULL, "Could not obtain directory listing"); - return 0; - } - /* gphoto2 numbering starts at 0 but we start at 1 */ - picture_number++; - if (!picture_number || picture_number > cached_images) { - gp_camera_status(NULL, "Invalid index"); - /* psa50_end(); */ - return 0; - } - strcpy(path,cached_drive); - atrs=0; - pick_nth(picture_number,path,&atrs); - gp_camera_status(NULL, path); - - j = strrchr(path, '\\') - path; - strncpy(dir,path,j); - dir[j]='\0'; - strcpy(file, path+j+1); + if (!update_dir_cache()) { + gp_camera_status(NULL, "Could not obtain directory listing"); + return 0; + } - if (psa50_delete_file(file,dir)) { - gp_camera_status(NULL, "error deleting file"); - /* psa50_end(); */ - return -1; - } - else { - /* psa50_end(); */ - cached_ready = 0; /*RAA: do smarter!*/ - cached_disk = 0; - if (cached_dir) clear_dir_cache(); - cached_dir = 0; - return 1; - } - } - return 0; + /* gphoto2 numbering starts at 0 but we start at 1 */ + picture_number++; + if (!picture_number || picture_number > cached_images) { + gp_camera_status(NULL, "Invalid index"); + return 0; + } + strcpy(path,cached_drive); + atrs=0; + pick_nth(picture_number,path,&atrs); + gp_camera_status(NULL, path); + + j = strrchr(path, '\\') - path; + strncpy(dir,path,j); + dir[j]='\0'; + strcpy(file, path+j+1); + + if (psa50_delete_file(file,dir)) { + gp_camera_status(NULL, "error deleting file"); + return -1; + } + else { + cached_ready = 0; /*RAA: do smarter!*/ + cached_disk = 0; + if (cached_dir) clear_dir_cache(); + cached_dir = 0; + + return 1; + } + } + return 0; } -/****************************************************************************/ -/* -static struct Image *canon_get_preview(void) { return NULL; } -static int canon_take_picture(void) { return 0; }; - -struct _Camera canon = +int camera_file_put(Camera *camera, CameraFile *file) { - canon_initialize, - canon_get_picture, - canon_get_preview, - canon_delete_image, - canon_take_picture, - canon_number_of_pictures, - canon_configure, - canon_summary, - canon_description -}; -*/ + return GP_OK; +} +int camera_config_get(Camera *camera, CameraWidget *window) +{ + return GP_ERROR; +} + +int camera_config_set(Camera *camera, CameraSetting *setting, int count) +{ + return GP_ERROR; +} + +int camera_capture(Camera *camera, CameraFile *file, CameraCaptureInfo *info) +{ + return GP_ERROR; +} diff --git a/camlibs/canon/canon.h b/camlibs/canon/canon.h index d997306fc..a1ac2c224 100644 --- a/camlibs/canon/canon.h +++ b/camlibs/canon/canon.h @@ -15,7 +15,12 @@ * ****************************************************************************/ - +typedef struct { + gpio_device *dev; + gpio_device_settings settings; + int speed; + int debug; +} CanonDataStruct; diff --git a/camlibs/canon/psa50.c b/camlibs/canon/psa50.c index 929c6982f..2a729748e 100644 --- a/camlibs/canon/psa50.c +++ b/camlibs/canon/psa50.c @@ -214,7 +214,7 @@ static unsigned char *psa50_recv_packet(unsigned char *type,unsigned char *seq, /** - * Waits for an "ACK" from the camera_data. + * Waits for an "ACK" from the camera. * * Return values: * 1 : ACK received @@ -274,7 +274,7 @@ static int psa50_wait_for_ack(void) } /** - * Sends a message to the camera_data. + * Sends a message to the camera. * * See the "Protocol" file for an explanation of the various * elements needed to create a message. @@ -344,7 +344,7 @@ static int psa50_send_msg(unsigned char mtype,unsigned char dir, /** - * Receive a message from the camera_data. + * Receive a message from the camera. * * See the "Protocol" file for an explanation of the various * elements needed to handle a message. @@ -484,7 +484,7 @@ static unsigned char *psa50_recv_msg(unsigned char mtype,unsigned char dir, /** * Higher level function: sends a message and waits for a - * reply from the camera_data. + * reply from the camera. * * Arguments: * mtype : type @@ -862,6 +862,13 @@ int psa50_ready() A5 = 0; return 1; } + else if ((!strcmp("Canon DIGITAL IXUS",camera_data.ident)) + || (!strcmp("Canon PowerShot S100",camera_data.ident))) { + gp_camera_status(NULL, "Detected a Digital IXUS / Powershot S100"); + camera_data.model = CANON_PS_S100; + A5=0; + return 1; + } else { printf ("Unknown camera!\n"); @@ -977,10 +984,16 @@ int psa50_ready() gp_camera_status(NULL, "Detected a Powershot S20"); camera_data.model = CANON_PS_S20; A5 = 0; - } else { - gp_camera_status(NULL, "Detected a Powershot S10"); - camera_data.model = CANON_PS_S10; - A5 = 0; + } else if ((!strcmp("Canon DIGITAL IXUS",psa50_id)) + || (!strcmp("Canon PowerShot S100",psa50_id))) + { + gp_camera_status(NULL, "Detected a Digital IXUS / Powershot S100"); + camera_data.model = CANON_PS_S100; + A5=0; + } else { + gp_camera_status(NULL, "Detected a Powershot S10"); + camera_data.model = CANON_PS_S10; + A5 = 0; } // 5 seconds delay should be enough for big flash cards. By diff --git a/camlibs/canon/psa50.h b/camlibs/canon/psa50.h index f0cf6ccb7..f316bac7c 100644 --- a/camlibs/canon/psa50.h +++ b/camlibs/canon/psa50.h @@ -42,7 +42,8 @@ typedef enum { CANON_PS_A50, CANON_PS_S10, CANON_PS_S20, - CANON_PS_A70 + CANON_PS_A70, + CANON_PS_S100 } canonCamModel; diff --git a/camlibs/fujitsu/fujitsu.c b/camlibs/fujitsu/fujitsu.c index 303c3c5a9..33e58de3c 100644 --- a/camlibs/fujitsu/fujitsu.c +++ b/camlibs/fujitsu/fujitsu.c @@ -165,22 +165,22 @@ int camera_init (Camera *camera, CameraInit *init) { gpio_set_timeout(fd->dev, TIMEOUT); if (gpio_open(fd->dev)==GPIO_ERROR) { - gp_message("Can not open the port"); + gp_camera_message(camera, "Can not open the port"); return (GP_ERROR); } if (fujitsu_ping(camera)==GP_ERROR) { - gp_message("Can not talk to camera"); + gp_camera_message(camera, "Can not talk to camera"); return (GP_ERROR); } if (fujitsu_set_speed(camera, init->port_settings.speed)==GP_ERROR) { - gp_message("Can not set the serial port speed"); + gp_camera_message(camera, "Can not set the serial port speed"); return (GP_ERROR); } if (fujitsu_get_int_register(camera, 1, &value)==GP_ERROR) { - gp_message("Could not communicate with camera after speed change"); + gp_camera_message(camera, "Could not communicate with camera after speed change"); return (GP_ERROR); } @@ -207,7 +207,7 @@ int camera_start(Camera *camera) { FujitsuData *fd = (FujitsuData*)camera->camlib_data; if (fujitsu_set_speed(camera, fd->speed)==GP_ERROR) { - gp_message("Can not set the serial port speed"); + gp_camera_message(camera, "Can not set the serial port speed"); return (GP_ERROR); } @@ -219,7 +219,7 @@ int camera_stop(Camera *camera) { FujitsuData *fd = (FujitsuData*)camera->camlib_data; if (fujitsu_set_speed(camera, -1)==GP_ERROR) { - gp_message("Can not set the serial port speed"); + gp_camera_message(camera, "Can not set the serial port speed"); return (GP_ERROR); } @@ -234,7 +234,7 @@ int camera_exit (Camera *camera) { /* obsoleted by start/stop if (fujitsu_end_session(camera)==GP_ERROR) { - gp_message("Can not end camera session"); + gp_camera_message(camera, "Can not end camera session"); return (GP_ERROR); } */ @@ -280,7 +280,7 @@ return (GP_ERROR); debug_print(fd, "Counting files"); if (fujitsu_get_int_register(camera, 10, &value)==GP_ERROR) { - gp_message("Could not get number of files on camera."); + gp_camera_message(camera, "Could not get number of files on camera."); return (GP_ERROR); } @@ -313,13 +313,13 @@ return (GP_ERROR); /* Set the current picture number */ if (fujitsu_set_int_register(camera, 4, file_number+1)==GP_ERROR) { - gp_message("Can not set current image"); + gp_camera_message(camera, "Can not set current image"); return (GP_ERROR); } /* Get the size of the current picture number */ if (fujitsu_get_int_register(camera, regl, &length)==GP_ERROR) { - gp_message("Can not get current image length"); + gp_camera_message(camera, "Can not get current image length"); return (GP_ERROR); } @@ -329,7 +329,7 @@ return (GP_ERROR); /* Get the picture filename */ if (fujitsu_get_string_register(camera, 79, NULL, file->name, &length)==GP_ERROR) { - gp_message("Can not get picture filename"); + gp_camera_message(camera, "Can not get picture filename"); return (GP_ERROR); } @@ -339,7 +339,7 @@ return (GP_ERROR); /* Get the picture data */ if (fujitsu_get_string_register(camera, regd, file, NULL, NULL)==GP_ERROR) { - gp_message("Can not get picture"); + gp_camera_message(camera, "Can not get picture"); return (GP_ERROR); } diff --git a/frontends/command-line/main.c b/frontends/command-line/main.c index f5224dc54..7afc8f3d3 100644 --- a/frontends/command-line/main.c +++ b/frontends/command-line/main.c @@ -147,7 +147,7 @@ char glob_model[64]; char glob_folder[128]; int glob_speed; -Camera *glob_camera; +Camera *glob_camera=NULL; CameraAbilities glob_abilities; int glob_debug; @@ -863,7 +863,6 @@ OPTION_CALLBACK(manual) { } printf("Camera Manual:\n%s\n", buf.text); - return (GP_OK); } @@ -1185,6 +1184,8 @@ e.g. SET CAMLIBS=C:\\GPHOTO2\\CAM\n"); } /* Exit gPhoto core */ + if (glob_camera) + gp_camera_free(glob_camera); gp_exit(); return (EXIT_SUCCESS); diff --git a/frontends/gtk-old/src/callbacks.c b/frontends/gtk-old/src/callbacks.c index 36cdc4e14..c51b288ec 100644 --- a/frontends/gtk-old/src/callbacks.c +++ b/frontends/gtk-old/src/callbacks.c @@ -621,15 +621,20 @@ void camera_select_update_camera(GtkWidget *entry, gpointer data) { for (x=0; x glob_camera_count) return (GP_ERROR); - strcpy(camera_name, glob_camera[camera_number].name); + strcpy(camera_name, glob_camera_list[camera_number].name); return (GP_OK); } @@ -175,7 +175,7 @@ int gp_camera_abilities_by_name (char *camera_name, CameraAbilities *abilities) int x=0; while (x < glob_camera_count) { - if (strcmp(glob_camera[x].name, camera_name)==0) + if (strcmp(glob_camera_list[x].name, camera_name)==0) return (gp_camera_abilities(x, abilities)); x++; } @@ -194,7 +194,7 @@ int gp_camera_new (Camera **camera, int camera_number, CameraPortInfo *settings) *camera = (Camera*)malloc(sizeof(Camera)); /* Initialize the members */ - strcpy((*camera)->model, glob_camera[camera_number].name); + strcpy((*camera)->model, glob_camera_list[camera_number].name); (*camera)->debug = glob_debug; (*camera)->port = (CameraPortInfo*)malloc(sizeof(CameraPortInfo)); (*camera)->abilities = (CameraAbilities*)malloc(sizeof(CameraAbilities)); @@ -205,7 +205,7 @@ int gp_camera_new (Camera **camera, int camera_number, CameraPortInfo *settings) memcpy((*camera)->port, settings, sizeof(CameraPortInfo)); - if (load_library(*camera, glob_camera[camera_number].name)==GP_ERROR) { + if (load_library(*camera, glob_camera_list[camera_number].name)==GP_ERROR) { gp_camera_free(*camera); return (GP_ERROR); } @@ -213,9 +213,9 @@ int gp_camera_new (Camera **camera, int camera_number, CameraPortInfo *settings) /* Initialize the camera library */ if (glob_debug) printf("core: Initializing \"%s\" (%s)...\n", - glob_camera[camera_number].name, - glob_camera[camera_number].library); - strcpy(ci.model, glob_camera[camera_number].name); + glob_camera_list[camera_number].name, + glob_camera_list[camera_number].library); + strcpy(ci.model, glob_camera_list[camera_number].name); memcpy(&ci.port_settings, settings, sizeof(CameraPortInfo)); if (gp_camera_init(*camera, &ci)==GP_ERROR) { @@ -246,7 +246,7 @@ int gp_camera_new_by_name (Camera **camera, char *camera_name, CameraPortInfo *s int x=0; while (x < glob_camera_count) { - if (strcmp(glob_camera[x].name, camera_name)==0) + if (strcmp(glob_camera_list[x].name, camera_name)==0) return (gp_camera_new(camera, x, settings)); x++; } diff --git a/libgphoto2/globals.h b/libgphoto2/globals.h index 52c95911c..6b2739e1b 100644 --- a/libgphoto2/globals.h +++ b/libgphoto2/globals.h @@ -7,7 +7,7 @@ extern int glob_debug; /* total cameras found */ extern int glob_camera_count; /* camera/library list */ -extern CameraChoice glob_camera[512]; +extern CameraChoice glob_camera_list[512]; /* camera abilities */ extern CameraAbilities glob_camera_abilities[512]; /* camera library id's */ diff --git a/libgphoto2/library.c b/libgphoto2/library.c index 6c960bfd6..0d62c001c 100644 --- a/libgphoto2/library.c +++ b/libgphoto2/library.c @@ -19,11 +19,8 @@ int is_library(char *library_filename) { #else sprintf(buf, "%s/%s", CAMLIBS, library_filename); #endif - if ((lh = dlopen(buf, RTLD_LAZY))==NULL) { - if (glob_debug) - perror("core:\tis_library"); + if ((lh = dlopen(buf, RTLD_LAZY))==NULL) return (GP_ERROR); - } dlclose(lh); @@ -36,8 +33,8 @@ int load_library (Camera *camera, char *camera_name) { void *lh; int x; for (x=0; x 0) { - memcpy(&t, &glob_camera[x], sizeof(t)); - memcpy(&glob_camera[x], &glob_camera[y], sizeof(t)); - memcpy(&glob_camera[y], &t, sizeof(t)); + memcpy(&t, &glob_camera_list[x], sizeof(t)); + memcpy(&glob_camera_list[x], &glob_camera_list[y], sizeof(t)); + memcpy(&glob_camera_list[y], &t, sizeof(t)); memcpy(&a, &glob_camera_abilities[x], sizeof(t)); memcpy(&glob_camera_abilities[x], &glob_camera_abilities[y],