#include #include #include #include #include #include #include #include "commands.h" static void usage(int argc, char **argv, const char *message, ...) { if (message) { va_list args; va_start(args, message); vfprintf(stderr, message, args); va_end(args); fprintf(stderr, "\n"); } fprintf(stderr, "usage: %1$s import file.sav 1..30 input.png\n", argv[0]); exit(1); } int cammy_import(int argc, char **argv) { cammy_camera *camera; cammy_image *image; int photo = 0; if (argc < 3) { usage(argc, argv, "No save file provided"); } else if (argc < 4) { usage(argc, argv, "No photo number provided"); } else if (argc < 5) { usage(argc, argv, "No photo provided"); } photo = atoi(argv[3]); if (photo < 1 || photo > CAMMY_CAMERA_PHOTO_COUNT) { usage(argc, argv, "Invalid photo number"); } if ((camera = cammy_camera_open(argv[2])) == NULL) { fprintf(stderr, "%s: %s: %s: %s\n", argv[0], "cammy_camera_open()", argv[2], strerror(errno)); goto error_camera_open; } if ((image = cammy_image_open(argv[4])) == NULL) { goto error_image_open; } if (image->width != CAMMY_PHOTO_WIDTH || image->height != CAMMY_PHOTO_HEIGHT) { fprintf(stderr, "%s: %s: %s\n", argv[0], argv[4], "Invalid image dimensions"); goto error_invalid_dimensions; } if (cammy_photo_import(&camera->data->photos[photo-1], image) < 0) { goto error_photo_import; } cammy_image_destroy(image); cammy_camera_close(camera); return 0; error_photo_import: error_invalid_dimensions: cammy_image_destroy(image); error_image_open: cammy_camera_close(camera); error_camera_open: return 1; }