diff --git a/doc/wishlist.html b/doc/wishlist.html index ed5d507e..5dfb72d7 100755 --- a/doc/wishlist.html +++ b/doc/wishlist.html @@ -118,6 +118,8 @@ email. This is useful to have people always submit to the same logbook, when the real logbook changes from time to time. 1 + + Select individual columns for display and printing 1 diff --git a/src/elogd.c b/src/elogd.c index f0e5478e..fffee077 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -4448,10 +4448,21 @@ void el_delete_attachment(LOGBOOK * lbs, char *file_name) strlcpy(str, lbs->data_dir, sizeof(str)); strlcat(str, file_name, sizeof(str)); sprintf(str+strlen(str), "-%d.png", i); - if (file_exist(str)) + if (file_exist(str)) { remove(str); - else - break; + continue; + } + + strlcpy(str, lbs->data_dir, sizeof(str)); + strlcat(str, file_name, sizeof(str)); + if (strrchr(str, '.')) + *strrchr(str, '.') = 0; + sprintf(str+strlen(str), "-%d.png", i); + if (file_exist(str)) { + remove(str); + continue; + } + break; } } @@ -11072,7 +11083,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (display_inline) { - if (is_image(att[index])) { + if (is_image(att[index]) || thumb_status) { if (thumb_status) { for (i=0 ; ; i++) { get_thumb_name(file_name, thumb_name, sizeof(thumb_name), i); @@ -22028,22 +22039,24 @@ int is_inline_attachment(char *encoding, int message_id, char *text, int i, char int create_thumbnail(LOGBOOK * lbs, char *file_name) { char str[MAX_PATH_LENGTH], cmd[2*MAX_PATH_LENGTH], thumb_size[256]; - int status; + int i; if (!image_magick_exist) return 0; - if (!getcfg(lbs->name, "Thumbnail size", thumb_size, sizeof(thumb_size))) - strcpy(thumb_size, "300>"); + if (getcfg(lbs->name, "Thumbnail size", str, sizeof(str))) + sprintf(thumb_size, " -thumbnail '%s'", str); + else + thumb_size[0] = 0; if (!chkext(file_name, ".ps") && !chkext(file_name, ".pdf") && !chkext(file_name, ".eps") && !chkext(file_name, ".gif") && !chkext(file_name, ".jpg") && !chkext(file_name, ".jpeg") && !chkext(file_name, ".png") && !chkext(file_name, ".ico") && !chkext(file_name, ".tif")) return 0; - status = get_thumb_name(file_name, str, sizeof(str), 0); - if (status) - return status; + i = get_thumb_name(file_name, str, sizeof(str), 0); + if (i) + return i; strlcpy(str, file_name, sizeof(str)); if (chkext(file_name, ".pdf") || chkext(file_name, ".ps")) { @@ -22052,16 +22065,15 @@ int create_thumbnail(LOGBOOK * lbs, char *file_name) } strlcat(str, ".png", sizeof(str)); -#ifdef OS_UNIX if (chkext(file_name, ".pdf") || chkext(file_name, ".ps")) - sprintf(cmd, "convert '%s[0-7]' -thumbnail '%s' '%s'", file_name, thumb_size, str); + sprintf(cmd, "convert '%s[0-7]'%s '%s'", file_name, thumb_size, str); else - sprintf(cmd, "convert '%s' -thumbnail '%s' '%s'", file_name, thumb_size, str); -#else - if (chkext(file_name, ".pdf") || chkext(file_name, ".ps")) - sprintf(cmd, "convert \"%s[0-7]\" -thumbnail \"%s\" \"%s\"", file_name, thumb_size, str); - else - sprintf(cmd, "convert \"%s\" -thumbnail \"%s\" \"%s\"", file_name, thumb_size, str); + sprintf(cmd, "convert '%s'%s '%s'", file_name, thumb_size, str); + +#ifdef OS_WINNT + for (i=0 ; i<(int)strlen(cmd) ; i++) + if (cmd[i] == '\'') + cmd[i] = '\"'; #endif sprintf(str, "SHELL \"%s\"", cmd); @@ -22073,9 +22085,9 @@ int create_thumbnail(LOGBOOK * lbs, char *file_name) my_shell(cmd, str, sizeof(str)); - status = get_thumb_name(file_name, str, sizeof(str), 0); - if (status) - return status; + i = get_thumb_name(file_name, str, sizeof(str), 0); + if (i) + return i; return 3; } @@ -22137,7 +22149,7 @@ int get_thumb_name(const char *file_name, char *thumb_name, int size, int index) void call_image_magick(LOGBOOK *lbs) { char str[256], cmd[256], file_name[256], thumb_name[256]; - int cur_width, cur_height, new_size, cur_rot, new_rot; + int cur_width, cur_height, new_size, cur_rot, new_rot, i; if (!isparam("req") || !isparam("img")) { show_error("Unknown IM request received"); @@ -22161,40 +22173,46 @@ void call_image_magick(LOGBOOK *lbs) } else cur_rot = 0; } else { - show_error(str); + show_http_header(NULL, FALSE, NULL); + rsputs(str); return; } + i = cmd[0] = 0; if (strieq(getparam("req"), "rotleft")) { new_rot = (cur_rot + 360 - 90) % 360; - sprintf(cmd, "convert \"%s\" -rotate %d -thumbnail %d -set comment \" %d\" \"%s\"", + sprintf(cmd, "convert '%s' -rotate %d -thumbnail %d -set comment ' %d' '%s'", file_name, new_rot, cur_height, new_rot, thumb_name); - my_shell(cmd, str, sizeof(str)); } if (strieq(getparam("req"), "rotright")) { new_rot = (cur_rot + 90) % 360; - sprintf(cmd, "convert \"%s\" -rotate %d -thumbnail %d -set comment \" %d\" \"%s\"", + sprintf(cmd, "convert '%s' -rotate %d -thumbnail %d -set comment ' %d' '%s'", file_name, new_rot, cur_height, new_rot, thumb_name); - my_shell(cmd, str, sizeof(str)); } if (strieq(getparam("req"), "smaller")) { new_size = (int) (cur_width/1.5); - sprintf(cmd, "convert \"%s\" -rotate %d -thumbnail %d -set comment \" %d\" \"%s\"", + sprintf(cmd, "convert '%s' -rotate %d -thumbnail %d -set comment ' %d' '%s'", file_name, cur_rot, new_size, cur_rot, thumb_name); - my_shell(cmd, str, sizeof(str)); } if (strieq(getparam("req"), "larger")) { new_size = (int) (cur_width*1.5); - sprintf(cmd, "convert \"%s\" -rotate %d -thumbnail %d -set comment \" %d\" \"%s\"", + sprintf(cmd, "convert '%s' -rotate %d -thumbnail %d -set comment ' %d' '%s'", file_name, cur_rot, new_size, cur_rot, thumb_name); - my_shell(cmd, str, sizeof(str)); } - show_http_header(NULL, FALSE, NULL); - rsputs(str); + if (cmd[0]) { +#ifdef OS_WINNT + for (i=0 ; i<(int)strlen(cmd) ; i++) + if (cmd[i] == '\'') + cmd[i] = '\"'; +#endif + my_shell(cmd, str, sizeof(str)); + show_http_header(NULL, FALSE, NULL); + rsputs(str); + } return; }