updated: [0434e3d] manually merged 235_remove_g_snprintf
Enrico Weigelt, metux IT service
weigelt at metux.de
Mon Feb 2 19:53:07 UTC 2009
The following commit has been merged in the master branch:
commit 0434e3de5d20323bed8b7b2dbff74c1d00a221ec
Merge: 3410eb32290abe51e6845483ed7a3723823a768a e4a4f77ac28f064d0fd5611a1b48689594289408
Author: Enrico Weigelt, metux IT service <weigelt at metux.de>
Date: Mon Feb 2 20:53:03 2009 +0100
manually merged 235_remove_g_snprintf
diff --combined ChangeLog
index 2c39360,a54e8eb..3b5bab1
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,20 -1,7 +1,21 @@@
+2009-02-01 Enrico Weigelt, metux ITS <weigelt at metux.de>
+
+ * src/util.c: fixed name_trunc() on NULL or empty parameters
+ * src/achown.c: fixed unitialized var in init_chown_advanced()
+ (patch from andrew_b)
+
+2009-01-31 Enrico Weigelt, metux ITS <weigelt at metux.de>, Patrick Winnertz <winnie at debian.org>, Slava Zanko <slavazanko at gmail.com>, Sergei Trofimovich <slyfox at inbox.ru>
+
+ * edit/editcmd.c, mhl/escape.h, mhl/string.h, mhl/types.h, src/Makefile.am,
+ * src/boxes.c, src/command.c, src/complete.c, src/complete.h, src/file.c,
+ * src/find.c, src/main.c, src/panelize.c, src/util.c, src/utilunix.c,
+ * src/widget.c, src/widget.h, src/wtools.c, vfs/fish.c:
+ fixed shell escaping issues in commandline completion engine
+
2009-01-31 Enrico Weigelt, metux ITS <weigelt at metux.de>
* replaced buggy concat_dir_and_file() by mhl_str_dir_plus_file() (in mhl/string.h)
+ * replaced g_snprintf() by snprintf()
2009-01-30 Enrico Weigelt, metux ITS <weigelt at metux.de>
@@@ -31,11 -18,6 +32,11 @@@
This solves "strange" rename cases, when copying/moving is performed into
deleted directory.
+2009-01-27 Enrico Weigelt, metux ITS <weigelt at metux.de>
+
+ * mhl/escape.h, src/complete.c, vfs/fish.c: introduced new type
+ SHELL_ESCAPED_STR for more type safety
+
2009-01-27 Enrico Weigelt, metux IT service <weigelt at metux.de>
* mhl/escape.h, mhl/string.h: fixed comments to use /* ... */
diff --combined edit/editcmd.c
index 07286b6,792322d..7dae88a
--- a/edit/editcmd.c
+++ b/edit/editcmd.c
@@@ -626,7 -626,7 +626,7 @@@ edit_raw_key_query (const char *heading
NULL, heading,
DLG_CENTER | DLG_TRYUP | DLG_WANT_TAB);
add_widget (raw_dlg,
- input_new (3 - cancel, w - 5, INPUT_COLOR, 2, "", 0));
+ input_new (3 - cancel, w - 5, INPUT_COLOR, 2, "", 0, INPUT_COMPLETE_DEFAULT));
add_widget (raw_dlg, label_new (3 - cancel, 2, query));
if (cancel)
add_widget (raw_dlg,
@@@ -2337,7 -2337,7 +2337,7 @@@ edit_goto_cmd (WEdit *edit
char *error;
char s[32];
- g_snprintf (s, sizeof (s), "%ld", line);
+ snprintf (s, sizeof (s), "%ld", line);
f = input_dialog (_(" Goto line "), _(" Enter line: "), MC_HISTORY_EDIT_GOTO_LINE,
line ? s : "");
if (!f)
diff --combined src/boxes.c
index 48ac3a9,23030ec..a46aeec
--- a/src/boxes.c
+++ b/src/boxes.c
@@@ -197,7 -197,7 +197,7 @@@ display_init (int radio_sel, char *init
status =
input_new (10, 9, INPUT_COLOR, DISPLAY_X - 14, _status[radio_sel],
- "mini-input");
+ "mini-input", INPUT_COMPLETE_DEFAULT);
add_widget (dd, status);
input_set_point (status, 0);
@@@ -207,7 -207,7 +207,7 @@@
user =
input_new (7, 9, INPUT_COLOR, DISPLAY_X - 14, init_text,
- "user-fmt-input");
+ "user-fmt-input", INPUT_COMPLETE_DEFAULT);
add_widget (dd, user);
input_set_point (user, 0);
@@@ -571,7 -571,7 +571,7 @@@ sel_charset_button (int action
: codepages[new_display_codepage].name;
/* avoid strange bug with label repainting */
- g_snprintf (buf, sizeof (buf), "%-27s", cpname);
+ snprintf (buf, sizeof (buf), "%-27s", cpname);
label_set_text (cplabel, buf);
return 0;
}
@@@ -772,12 -772,12 +772,12 @@@ configure_vfs (void
ret_use_netrc = use_netrc;
ret_ftpfs_use_passive_connections = ftpfs_use_passive_connections;
ret_ftpfs_use_passive_connections_over_proxy = ftpfs_use_passive_connections_over_proxy;
- g_snprintf(buffer3, sizeof (buffer3), "%i", ftpfs_directory_timeout);
+ snprintf(buffer3, sizeof (buffer3), "%i", ftpfs_directory_timeout);
confvfs_widgets[8].text = buffer3;
confvfs_widgets[10].text = ftpfs_anonymous_passwd;
confvfs_widgets[5].text = ftpfs_proxy_host;
#endif
- g_snprintf (buffer2, sizeof (buffer2), "%i", vfs_timeout);
+ snprintf (buffer2, sizeof (buffer2), "%i", vfs_timeout);
confvfs_widgets [3 + VFS_WIDGETBASE].text = buffer2;
if (quick_dialog (&confvfs_dlg) != B_CANCEL) {
@@@ -1085,17 -1085,17 +1085,17 @@@ vfs_smb_get_authinfo (const char *host
g_free (title);
- in_user = input_new (5, istart, INPUT_COLOR, ilen, user, "auth_name");
+ in_user = input_new (5, istart, INPUT_COLOR, ilen, user, "auth_name", INPUT_COMPLETE_DEFAULT);
add_widget (auth_dlg, in_user);
- in_domain = input_new (3, istart, INPUT_COLOR, ilen, domain, "auth_domain");
+ in_domain = input_new (3, istart, INPUT_COLOR, ilen, domain, "auth_domain", INPUT_COMPLETE_DEFAULT);
add_widget (auth_dlg, in_domain);
add_widget (auth_dlg, button_new (9, b2, B_CANCEL, NORMAL_BUTTON,
buts[1], 0));
add_widget (auth_dlg, button_new (9, b0, B_ENTER, DEFPUSH_BUTTON,
buts[0], 0));
- in_password = input_new (7, istart, INPUT_COLOR, ilen, "", "auth_password");
+ in_password = input_new (7, istart, INPUT_COLOR, ilen, "", "auth_password", INPUT_COMPLETE_DEFAULT);
in_password->completion_flags = 0;
in_password->is_password = 1;
add_widget (auth_dlg, in_password);
diff --combined src/charsets.c
index f2e69e0,ec1aca1..4e807c0
--- a/src/charsets.c
+++ b/src/charsets.c
@@@ -27,8 -27,6 +27,8 @@@
#include <iconv.h>
+#include <mhl/string.h>
+
#include "global.h"
#include "charsets.h"
@@@ -198,7 -196,7 +198,7 @@@ init_translation_table (int cpsource, i
cd = iconv_open (cpdisp, cpsour);
if (cd == (iconv_t) - 1) {
- g_snprintf (errbuf, sizeof (errbuf),
+ snprintf (errbuf, sizeof (errbuf),
_("Cannot translate from %s to %s"), cpsour, cpdisp);
return errbuf;
}
@@@ -212,7 -210,7 +212,7 @@@
cd = iconv_open (cpsour, cpdisp);
if (cd == (iconv_t) - 1) {
- g_snprintf (errbuf, sizeof (errbuf),
+ snprintf (errbuf, sizeof (errbuf),
_("Cannot translate from %s to %s"), cpdisp, cpsour);
return errbuf;
}
diff --combined src/file.c
index cb61307,1ae15fd..5fb0bfd
--- a/src/file.c
+++ b/src/file.c
@@@ -50,8 -50,6 +50,8 @@@
#include <sys/stat.h>
#include <unistd.h>
+#include <mhl/memory.h>
+#include <mhl/escape.h>
#include <mhl/string.h>
#include "global.h"
@@@ -67,7 -65,6 +67,7 @@@
#include "widget.h"
#include "wtools.h"
#include "background.h" /* we_are_background */
+#include "util.h"
/* Needed for current_panel, other_panel and WTree */
#include "dir.h"
@@@ -181,43 -178,37 +181,43 @@@ do_transform_source (FileOpContext *ctx
for (next_reg = 1, j = 0, k = 0; j < strlen (ctx->dest_mask); j++) {
switch (ctx->dest_mask[j]) {
case '\\':
- j++;
- if (!isdigit ((unsigned char) ctx->dest_mask[j])) {
- /* Backslash followed by non-digit */
- switch (ctx->dest_mask[j]) {
- case 'U':
- case_conv |= UP_SECT;
- case_conv &= ~LOW_SECT;
- break;
- case 'u':
- case_conv |= UP_CHAR;
- break;
- case 'L':
- case_conv |= LOW_SECT;
- case_conv &= ~UP_SECT;
- break;
- case 'l':
- case_conv |= LOW_CHAR;
- break;
- case 'E':
- case_conv = NO_CONV;
- break;
- default:
- /* Backslash as quote mark */
- fntarget[k++] =
- convert_case (ctx->dest_mask[j], &case_conv);
- }
+ if (mhl_shell_is_char_escaped (&ctx->dest_mask[j])){
+ fntarget[k++] = ctx->dest_mask[j++];
+ fntarget[k++] = ctx->dest_mask[j];
break;
} else {
- /* Backslash followed by digit */
- next_reg = ctx->dest_mask[j] - '0';
- /* Fall through */
+ j++;
+ if (!isdigit ((unsigned char) ctx->dest_mask[j])) {
+ /* Backslash followed by non-digit */
+ switch (ctx->dest_mask[j]) {
+ case 'U':
+ case_conv |= UP_SECT;
+ case_conv &= ~LOW_SECT;
+ break;
+ case 'u':
+ case_conv |= UP_CHAR;
+ break;
+ case 'L':
+ case_conv |= LOW_SECT;
+ case_conv &= ~UP_SECT;
+ break;
+ case 'l':
+ case_conv |= LOW_CHAR;
+ break;
+ case 'E':
+ case_conv = NO_CONV;
+ break;
+ default:
+ /* Backslash as quote mark */
+ fntarget[k++] =
+ convert_case (ctx->dest_mask[j], &case_conv);
+ }
+ break;
+ } else {
+ /* Backslash followed by digit */
+ next_reg = ctx->dest_mask[j] - '0';
+ /* Fall through */
+ }
}
case '*':
@@@ -802,7 -793,7 +802,7 @@@ copy_file_file (FileOpContext *ctx, con
}
}
- if (!appending) {
+ if (!appending && ctx->preserve) {
while (mc_chmod (dst_path, (src_mode & ctx->umask_kill))) {
temp_status = file_error (
_(" Cannot chmod target file \"%s\" \n %s "), dst_path);
@@@ -1701,10 -1692,10 +1701,10 @@@ panel_operate_generate_prompt (const WP
if (single_source) {
i = fmd_xlen - strlen (format_string) - 4;
- g_snprintf (cmd_buf, sizeof (cmd_buf), format_string,
+ snprintf (cmd_buf, sizeof (cmd_buf), format_string,
name_trunc (single_source, i));
} else {
- g_snprintf (cmd_buf, sizeof (cmd_buf), format_string,
+ snprintf (cmd_buf, sizeof (cmd_buf), format_string,
panel->marked);
i = strlen (cmd_buf) + 6 - fmd_xlen;
if (i > 0) {
@@@ -1905,7 -1896,7 +1905,7 @@@ panel_operate (void *source_panel, File
g_free (dest);
dest = temp2;
temp = NULL;
-
+
switch (operation) {
case OP_COPY:
/*
@@@ -1997,9 -1988,6 +1997,9 @@@
else {
char *temp2 = mhl_str_dir_plus_file (dest, temp);
+ source_with_path = mhl_shell_unescape_buf(source_with_path);
+ temp2 = mhl_shell_unescape_buf(temp2);
+
switch (operation) {
case OP_COPY:
/*
@@@ -2126,7 -2114,7 +2126,7 @@@ real_do_file_error (enum OperationMode
int
file_error (const char *format, const char *file)
{
- g_snprintf (cmd_buf, sizeof (cmd_buf), format,
+ snprintf (cmd_buf, sizeof (cmd_buf), format,
path_trunc (file, 30), unix_error_string (errno));
return do_file_error (cmd_buf);
@@@ -2142,7 -2130,7 +2142,7 @@@ files_error (const char *format, const
strcpy (nfile1, path_trunc (file1, 15));
strcpy (nfile2, path_trunc (file2, 15));
- g_snprintf (cmd_buf, sizeof (cmd_buf), format, nfile1, nfile2,
+ snprintf (cmd_buf, sizeof (cmd_buf), format, nfile1, nfile2,
unix_error_string (errno));
return do_file_error (cmd_buf);
diff --combined src/find.c
index ca06df9,bb0a1e2..8d90bc8
--- a/src/find.c
+++ b/src/find.c
@@@ -276,16 -276,16 +276,16 @@@ find_parameters (char **start_dir, cha
add_widget (find_dlg, case_sense);
in_with =
- input_new (8, istart, INPUT_COLOR, ilen, in_contents, "content");
+ input_new (8, istart, INPUT_COLOR, ilen, in_contents, "content", INPUT_COMPLETE_DEFAULT);
add_widget (find_dlg, in_with);
add_widget (find_dlg, recursively_cbox);
in_name =
- input_new (5, istart, INPUT_COLOR, ilen, in_start_name, "name");
+ input_new (5, istart, INPUT_COLOR, ilen, in_start_name, "name", INPUT_COMPLETE_DEFAULT);
add_widget (find_dlg, in_name);
in_start =
- input_new (3, istart, INPUT_COLOR, ilen, in_start_dir, "start");
+ input_new (3, istart, INPUT_COLOR, ilen, in_start_dir, "start", INPUT_COMPLETE_DEFAULT);
add_widget (find_dlg, in_start);
add_widget (find_dlg, label_new (8, 3, labs[2]));
@@@ -530,7 -530,7 +530,7 @@@ search_content (Dlg_head *h, const cha
if (file_fd == -1)
return 0;
- g_snprintf (buffer, sizeof (buffer), _("Grepping in %s"), name_trunc (filename, FIND2_X_USE));
+ snprintf (buffer, sizeof (buffer), _("Grepping in %s"), name_trunc (filename, FIND2_X_USE));
status_update (buffer);
mc_refresh ();
@@@ -666,7 -666,7 +666,7 @@@ do_search (struct Dlg_head *h
if (verbose){
char buffer [BUF_SMALL];
- g_snprintf (buffer, sizeof (buffer), _("Searching %s"),
+ snprintf (buffer, sizeof (buffer), _("Searching %s"),
name_trunc (directory, FIND2_X_USE));
status_update (buffer);
}
diff --combined src/main.c
index 89fd0fd,359d549..a24c337
--- a/src/main.c
+++ b/src/main.c
@@@ -67,6 -67,7 +67,6 @@@
#include "widget.h"
#include "command.h"
#include "wtools.h"
-#include "complete.h" /* For the free_completion */
#include "chmod.h"
#include "chown.h"
@@@ -1649,7 -1650,7 +1649,7 @@@ load_hint (int force
} else {
char text[BUF_SMALL];
- g_snprintf (text, sizeof (text), _("GNU Midnight Commander %s\n"),
+ snprintf (text, sizeof (text), _("GNU Midnight Commander %s\n"),
VERSION);
set_hintbar (text);
}
diff --combined src/util.c
index aebf59a,6f5d443..deeff58
--- a/src/util.c
+++ b/src/util.c
@@@ -35,7 -35,6 +35,7 @@@
#include <sys/stat.h>
#include <unistd.h>
+#include <mhl/escape.h>
#include <mhl/string.h>
#include "global.h"
@@@ -230,27 -229,22 +230,27 @@@ fake_name_quote (const char *s, int quo
* Return static buffer, no need to free() it.
*/
const char *
-name_trunc (const char *txt, int trunc_len)
+name_trunc (const char *txt, size_t trunc_len)
{
static char x[MC_MAXPATHLEN + MC_MAXPATHLEN];
- int txt_len;
+ size_t txt_len;
char *p;
- if ((size_t) trunc_len > sizeof (x) - 1) {
+ if (!txt)
+ return NULL;
+ if (!*txt)
+ return txt;
+
+ if (trunc_len > sizeof (x) - 1) {
trunc_len = sizeof (x) - 1;
}
txt_len = strlen (txt);
if (txt_len <= trunc_len) {
strcpy (x, txt);
} else {
- int y = (trunc_len / 2) + (trunc_len % 2);
- strncpy (x, txt, y);
- strncpy (x + y, txt + txt_len - (trunc_len / 2), trunc_len / 2);
+ size_t y = (trunc_len / 2) + (trunc_len % 2);
+ strncpy (x, txt, (size_t) y);
+ strncpy (x + y, txt + (txt_len - (trunc_len / 2)), trunc_len / 2);
x[y] = '~';
}
x[trunc_len] = 0;
@@@ -266,7 -260,7 +266,7 @@@
* reasons.
*/
const char *
-path_trunc (const char *path, int trunc_len) {
+path_trunc (const char *path, size_t trunc_len) {
const char *ret;
char *secure_path = strip_password (g_strdup (path), 1);
@@@ -291,7 -285,7 +291,7 @@@ size_trunc (double size
xtra = "M";
}
}
- g_snprintf (x, sizeof (x), "%.0f%s", (size/divisor), xtra);
+ snprintf (x, sizeof (x), "%.0f%s", (size/divisor), xtra);
return x;
}
@@@ -350,18 -344,18 +350,18 @@@ size_trunc_len (char *buffer, int len,
if (size == 0) {
if (j == units) {
/* Empty files will print "0" even with minimal width. */
- g_snprintf (buffer, len + 1, "0");
+ snprintf (buffer, len + 1, "0");
break;
}
/* Use "~K" or just "K" if len is 1. Use "B" for bytes. */
- g_snprintf (buffer, len + 1, (len > 1) ? "~%s" : "%s",
+ snprintf (buffer, len + 1, (len > 1) ? "~%s" : "%s",
(j > 1) ? suffix[j - 1] : "B");
break;
}
if (size < power10 [len - (j > 0)]) {
- g_snprintf (buffer, len + 1, "%lu%s", (unsigned long) size, suffix[j]);
+ snprintf (buffer, len + 1, "%lu%s", (unsigned long) size, suffix[j]);
break;
}
@@@ -635,7 -629,7 +635,7 @@@ set_int (const char *file, const char *
{
char buffer [BUF_TINY];
- g_snprintf (buffer, sizeof (buffer), "%d", value);
+ snprintf (buffer, sizeof (buffer), "%d", value);
return WritePrivateProfileString (app_text, key, buffer, file);
}
@@@ -851,11 -845,11 +851,11 @@@ unix_error_string (int error_num
gchar *strerror_currentlocale;
strerror_currentlocale = g_locale_from_utf8(g_strerror (error_num), -1, NULL, NULL, NULL);
- g_snprintf (buffer, sizeof (buffer), "%s (%d)",
+ snprintf (buffer, sizeof (buffer), "%s (%d)",
strerror_currentlocale, error_num);
g_free(strerror_currentlocale);
#else
- g_snprintf (buffer, sizeof (buffer), "%s (%d)",
+ snprintf (buffer, sizeof (buffer), "%s (%d)",
g_strerror (error_num), error_num);
#endif
return buffer;
@@@ -1522,3 -1516,4 +1522,3 @@@ Q_ (const char *s
sep = strchr(result, '|');
return (sep != NULL) ? sep + 1 : result;
}
-
diff --combined src/utilunix.c
index 4b088e5,7cefb5a..77b07b9
--- a/src/utilunix.c
+++ b/src/utilunix.c
@@@ -41,8 -41,6 +41,8 @@@
#endif
#include <unistd.h>
+#include <mhl/string.h>
+
#include "global.h"
#include "execute.h"
#include "wtools.h" /* message() */
@@@ -95,7 -93,7 +95,7 @@@ char *get_owner (int uid
return pwd->pw_name;
}
else {
- g_snprintf (ibuf, sizeof (ibuf), "%d", uid);
+ snprintf (ibuf, sizeof (ibuf), "%d", uid);
return ibuf;
}
}
@@@ -115,7 -113,7 +115,7 @@@ char *get_group (int gid
i_cache_add (gid, gid_cache, GID_CACHE_SIZE, grp->gr_name, &gid_last);
return grp->gr_name;
} else {
- g_snprintf (gbuf, sizeof (gbuf), "%d", gid);
+ snprintf (gbuf, sizeof (gbuf), "%d", gid);
return gbuf;
}
}
@@@ -256,10 -254,10 +256,10 @@@ mc_tmpdir (void
pwd = getpwuid (getuid ());
if (pwd)
- g_snprintf (buffer, sizeof (buffer), "%s/mc-%s", sys_tmp,
+ snprintf (buffer, sizeof (buffer), "%s/mc-%s", sys_tmp,
pwd->pw_name);
else
- g_snprintf (buffer, sizeof (buffer), "%s/mc-%lu", sys_tmp,
+ snprintf (buffer, sizeof (buffer), "%s/mc-%lu", sys_tmp,
(unsigned long) getuid ());
canonicalize_pathname (buffer);
@@@ -308,11 -306,11 +308,11 @@@
if (fallback_ok) {
fprintf (stderr, _("Temporary files will be created in %s\n"),
sys_tmp);
- g_snprintf (buffer, sizeof (buffer), "%s", sys_tmp);
+ snprintf (buffer, sizeof (buffer), "%s", sys_tmp);
error = NULL;
} else {
fprintf (stderr, _("Temporary files will not be created\n"));
- g_snprintf (buffer, sizeof (buffer), "%s", "/dev/null/");
+ snprintf (buffer, sizeof (buffer), "%s", "/dev/null/");
}
fprintf (stderr, "%s\n", _("Press any key to continue..."));
@@@ -428,7 -426,7 +428,7 @@@ canonicalize_pathname (char *path
if (p[0] == PATH_SEP && p[1] == PATH_SEP) {
s = p + 1;
while (*(++s) == PATH_SEP);
- strcpy (p + 1, s);
+ mhl_strmove (p + 1, s);
}
p++;
}
@@@ -437,7 -435,7 +437,7 @@@
p = lpath;
while (*p) {
if (p[0] == PATH_SEP && p[1] == '.' && p[2] == PATH_SEP)
- strcpy (p, p + 2);
+ mhl_strmove (p, p + 2);
else
p++;
}
@@@ -453,7 -451,7 +453,7 @@@
lpath[1] = 0;
return;
} else {
- strcpy (lpath, lpath + 2);
+ mhl_strmove (lpath, lpath + 2);
}
}
@@@ -499,10 -497,10 +499,10 @@@
if (p[3] != 0) {
if (s == lpath && *s == PATH_SEP) {
/* "/../foo" -> "/foo" */
- strcpy (s + 1, p + 4);
+ mhl_strmove (s + 1, p + 4);
} else {
/* "token/../foo" -> "foo" */
- strcpy (s, p + 4);
+ mhl_strmove (s, p + 4);
}
p = (s > lpath) ? s - 1 : s;
continue;
diff --combined src/widget.c
index f85cc2a,4312677..597438f
--- a/src/widget.c
+++ b/src/widget.c
@@@ -43,6 -43,7 +43,6 @@@
#include "dialog.h"
#include "widget.h"
#include "win.h"
-#include "complete.h"
#include "key.h" /* XCTRL and ALT macros */
#include "profile.h" /* for history loading and saving */
#include "wtools.h" /* For common_dialog_repaint() */
@@@ -157,15 -158,15 +157,15 @@@ button_callback (Widget *w, widget_msg_
switch (b->flags) {
case DEFPUSH_BUTTON:
- g_snprintf (buf, sizeof (buf), "[< %s >]", b->text);
+ snprintf (buf, sizeof (buf), "[< %s >]", b->text);
off = 3;
break;
case NORMAL_BUTTON:
- g_snprintf (buf, sizeof (buf), "[ %s ]", b->text);
+ snprintf (buf, sizeof (buf), "[ %s ]", b->text);
off = 2;
break;
case NARROW_BUTTON:
- g_snprintf (buf, sizeof (buf), "[%s]", b->text);
+ snprintf (buf, sizeof (buf), "[%s]", b->text);
off = 1;
break;
case HIDDEN_BUTTON:
@@@ -870,7 -871,7 +870,7 @@@ history_get (const char *input_name
for (i = 0;; i++) {
char key_name[BUF_TINY];
char this_entry[BUF_LARGE];
- g_snprintf (key_name, sizeof (key_name), "%d", i);
+ snprintf (key_name, sizeof (key_name), "%d", i);
GetPrivateProfileString (input_name, key_name, "", this_entry,
sizeof (this_entry), profile);
if (!*this_entry)
@@@ -934,7 -935,7 +934,7 @@@ history_put (const char *input_name, GL
/* We shouldn't have null entries, but let's be sure */
if (text && *text) {
char key_name[BUF_TINY];
- g_snprintf (key_name, sizeof (key_name), "%d", i++);
+ snprintf (key_name, sizeof (key_name), "%d", i++);
WritePrivateProfileString (input_name, key_name, text,
profile);
}
@@@ -1659,7 -1660,7 +1659,7 @@@ input_event (Gpm_Event * event, void *d
WInput *
input_new (int y, int x, int color, int len, const char *def_text,
- const char *histname)
+ const char *histname, INPUT_COMPLETE_FLAGS completion_flags)
{
WInput *in = g_new (WInput, 1);
int initial_buffer_len;
@@@ -1688,7 -1689,9 +1688,7 @@@
initial_buffer_len = 1 + max ((size_t) len, strlen (def_text));
in->widget.options |= W_IS_INPUT;
in->completions = NULL;
- in->completion_flags =
- INPUT_COMPLETE_FILENAMES | INPUT_COMPLETE_HOSTNAMES |
- INPUT_COMPLETE_VARIABLES | INPUT_COMPLETE_USERNAMES;
+ in->completion_flags = completion_flags;
in->current_max_len = initial_buffer_len;
in->buffer = g_malloc (initial_buffer_len);
in->color = color;
diff --combined vfs/fish.c
index 6d45387,1723d04..d01e6cd
--- a/vfs/fish.c
+++ b/vfs/fish.c
@@@ -144,7 -144,7 +144,7 @@@ fish_command (struct vfs_class *me, str
enable_interrupt_key ();
status = write (SUP.sockw, str, strlen (str));
- g_free (str);
+ mhl_mem_free (str);
disable_interrupt_key ();
if (status < 0)
@@@ -168,10 -168,10 +168,10 @@@ fish_free_archive (struct vfs_class *me
close (SUP.sockr);
SUP.sockw = SUP.sockr = -1;
}
- g_free (SUP.host);
- g_free (SUP.user);
- g_free (SUP.cwdir);
- g_free (SUP.password);
+ mhl_mem_free (SUP.host);
+ mhl_mem_free (SUP.user);
+ mhl_mem_free (SUP.cwdir);
+ mhl_mem_free (SUP.password);
}
static void
@@@ -228,7 -228,7 +228,7 @@@ fish_open_archive_int (struct vfs_clas
if (SUP.flags > FISH_FLAG_RSH)
{
argv[i++] = "-p";
- g_snprintf (gbuf, sizeof (gbuf), "%d", SUP.flags);
+ snprintf (gbuf, sizeof (gbuf), "%d", SUP.flags);
argv[i++] = gbuf;
}
@@@ -260,7 -260,7 +260,7 @@@
p = g_strconcat (_(" fish: Password required for "),
SUP.user, " ", (char *) NULL);
op = vfs_get_password (p);
- g_free (p);
+ mhl_mem_free (p);
if (op == NULL)
ERRNOR (EPERM, -1);
SUP.password = op;
@@@ -323,7 -323,7 +323,7 @@@ fish_open_archive (struct vfs_class *me
p = vfs_split_url (strchr (op, ':') + 1, &host, &user, &flags,
&password, 0, URL_NOSLASH);
- g_free (p);
+ mhl_mem_free (p);
SUP.host = host;
SUP.user = user;
@@@ -350,12 -350,12 +350,12 @@@ fish_archive_same (struct vfs_class *me
op = vfs_split_url (strchr (op, ':') + 1, &host, &user, &flags, 0, 0,
URL_NOSLASH);
- g_free (op);
+ mhl_mem_free (op);
flags = ((strcmp (host, SUP.host) == 0)
&& (strcmp (user, SUP.user) == 0) && (flags == SUP.flags));
- g_free (host);
- g_free (user);
+ mhl_mem_free (host);
+ mhl_mem_free (user);
return flags;
}
@@@ -367,7 -367,7 +367,7 @@@ fish_dir_load(struct vfs_class *me, str
char buffer[8192];
struct vfs_s_entry *ent = NULL;
FILE *logfile;
- char *quoted_path;
+ SHELL_ESCAPED_STR quoted_path;
int reply_code;
#if 0
@@@ -462,8 -462,8 +462,8 @@@
"else\n"
"echo '### 500'\n"
"fi\n",
- quoted_path, quoted_path, quoted_path, quoted_path, quoted_path, quoted_path);
- mhl_mem_free (quoted_path);
+ quoted_path.s, quoted_path.s, quoted_path.s, quoted_path.s, quoted_path.s, quoted_path.s);
+ mhl_mem_free (quoted_path.s);
ent = vfs_s_generate_entry(me, NULL, dir, 0);
while (1) {
int res = vfs_s_get_line_interruptible (me, buffer, sizeof (buffer), SUP.sockr);
@@@ -594,7 -594,7 +594,7 @@@
vfs_s_free_entry (me, ent);
reply_code = fish_decode_reply(buffer + 4, 0);
if (reply_code == COMPLETE) {
- g_free (SUP.cwdir);
+ mhl_mem_free (SUP.cwdir);
SUP.cwdir = g_strdup (remote_path);
print_vfs_message (_("%s: done."), me->name);
return 0;
@@@ -618,7 -618,7 +618,7 @@@ fish_file_store(struct vfs_class *me, s
struct stat s;
int was_error = 0;
int h;
- char *quoted_name;
+ SHELL_ESCAPED_STR quoted_name;
h = open (localname, O_RDONLY);
@@@ -659,7 -659,7 +659,7 @@@
*/
quoted_name = mhl_shell_escape_dup(name);
- print_vfs_message(_("fish: store %s: sending command..."), quoted_name );
+ print_vfs_message(_("fish: store %s: sending command..."), quoted_name.s );
/* FIXME: File size is limited to ULONG_MAX */
if (!fh->u.fish.append)
@@@ -683,8 -683,8 +683,8 @@@
" rest=`expr $rest - $n`\n"
"done\n"
"}; echo '### 200'\n",
- (unsigned long) s.st_size, quoted_name,
- quoted_name, (unsigned long) s.st_size,
+ (unsigned long) s.st_size, quoted_name.s,
+ quoted_name.s, (unsigned long) s.st_size,
(unsigned long) s.st_size);
else
n = fish_command (me, super, WAIT_REPLY,
@@@ -700,8 -700,8 +700,8 @@@
" rest=`expr $rest - $n`\n"
"done\n"
"}; echo '### 200'\n",
- (unsigned long) s.st_size, quoted_name,
- quoted_name, (unsigned long) s.st_size);
+ (unsigned long) s.st_size, quoted_name.s,
+ quoted_name.s, (unsigned long) s.st_size);
if (n != PRELIM) {
close (h);
@@@ -735,14 -735,14 +735,14 @@@
(unsigned long) s.st_size);
}
close(h);
- mhl_mem_free(quoted_name);
+ mhl_mem_free(quoted_name.s);
if ((fish_get_reply (me, SUP.sockr, NULL, 0) != COMPLETE) || was_error)
ERRNOR (E_REMOTE, -1);
return 0;
error_return:
close(h);
fish_get_reply(me, SUP.sockr, NULL, 0);
- mhl_mem_free(quoted_name);
+ mhl_mem_free(quoted_name.s);
return -1;
}
@@@ -750,7 -750,7 +750,7 @@@ static in
fish_linear_start (struct vfs_class *me, struct vfs_s_fh *fh, off_t offset)
{
char *name;
- char *quoted_name;
+ SHELL_ESCAPED_STR quoted_name;
if (offset)
ERRNOR (E_NOTSUPP, 0);
name = vfs_s_fullpath (me, fh->ino);
@@@ -779,8 -779,8 +779,8 @@@
"else\n"
"echo '### 500'\n"
"fi\n",
- quoted_name, quoted_name, quoted_name, quoted_name );
- g_free (quoted_name);
+ quoted_name.s, quoted_name.s, quoted_name.s, quoted_name.s );
+ mhl_mem_free (quoted_name.s);
if (offset != PRELIM) ERRNOR (E_REMOTE, 0);
fh->linear = LS_LINEAR_OPEN;
fh->u.fish.got = 0;
@@@ -889,29 -889,28 +889,29 @@@ fish_send_command(struct vfs_class *me
#define PREFIX \
char buf[BUF_LARGE]; \
const char *crpath; \
- char *rpath, *mpath = g_strdup (path); \
+ char *mpath = mhl_str_dup (path); \
+ SHELL_ESCAPED_STR rpath; \
struct vfs_s_super *super; \
if (!(crpath = vfs_s_get_path_mangle (me, mpath, &super, 0))) { \
- g_free (mpath); \
+ mhl_mem_free (mpath); \
return -1; \
} \
rpath = mhl_shell_escape_dup(crpath); \
- g_free (mpath);
+ mhl_mem_free (mpath);
#define POSTFIX(flags) \
- g_free (rpath); \
+ mhl_mem_free (rpath.s); \
return fish_send_command(me, super, buf, flags);
static int
fish_chmod (struct vfs_class *me, const char *path, int mode)
{
PREFIX
- g_snprintf(buf, sizeof(buf), "#CHMOD %4.4o /%s\n"
+ snprintf(buf, sizeof(buf), "#CHMOD %4.4o /%s\n"
"chmod %4.4o /%s 2>/dev/null\n"
"echo '### 000'\n",
- mode & 07777, rpath,
- mode & 07777, rpath);
+ mode & 07777, rpath.s,
+ mode & 07777, rpath.s);
POSTFIX(OPT_FLUSH);
}
@@@ -920,24 -919,24 +920,24 @@@ static int fish_##name (struct vfs_clas
{ \
char buf[BUF_LARGE]; \
const char *crpath1, *crpath2; \
- char *rpath1, *rpath2, *mpath1, *mpath2; \
+ char *mpath1, *mpath2; \
struct vfs_s_super *super1, *super2; \
if (!(crpath1 = vfs_s_get_path_mangle (me, mpath1 = g_strdup(path1), &super1, 0))) { \
- g_free (mpath1); \
+ mhl_mem_free (mpath1); \
return -1; \
} \
if (!(crpath2 = vfs_s_get_path_mangle (me, mpath2 = g_strdup(path2), &super2, 0))) { \
- g_free (mpath1); \
- g_free (mpath2); \
+ mhl_mem_free (mpath1); \
+ mhl_mem_free (mpath2); \
return -1; \
} \
- rpath1 = mhl_shell_escape_dup (crpath1); \
- g_free (mpath1); \
- rpath2 = mhl_shell_escape_dup (crpath2); \
- g_free (mpath2); \
- snprintf(buf, sizeof(buf), string "\n", rpath1, rpath2, rpath1, rpath2); \
- mhl_mem_free (rpath1); \
- mhl_mem_free (rpath2); \
+ SHELL_ESCAPED_STR rpath1 = mhl_shell_escape_dup (crpath1); \
+ mhl_mem_free (mpath1); \
+ SHELL_ESCAPED_STR rpath2 = mhl_shell_escape_dup (crpath2); \
+ mhl_mem_free (mpath2); \
+ g_snprintf(buf, sizeof(buf), string "\n", rpath1.s, rpath2.s, rpath1.s, rpath2.s); \
+ mhl_mem_free (rpath1.s); \
+ mhl_mem_free (rpath2.s); \
return fish_send_command(me, super2, buf, OPT_FLUSH); \
}
@@@ -950,15 -949,15 +950,15 @@@ FISH_OP(link, "#LINK /%s /%s\n
static int fish_symlink (struct vfs_class *me, const char *setto, const char *path)
{
- char *qsetto;
+ SHELL_ESCAPED_STR qsetto;
PREFIX
qsetto = mhl_shell_escape_dup (setto);
- g_snprintf(buf, sizeof(buf),
+ snprintf(buf, sizeof(buf),
"#SYMLINK %s /%s\n"
"ln -s %s /%s 2>/dev/null\n"
"echo '### 000'\n",
- qsetto, rpath, qsetto, rpath);
- mhl_mem_free (qsetto);
+ qsetto.s, rpath.s, qsetto.s, rpath.s);
+ mhl_mem_free (qsetto.s);
POSTFIX(OPT_FLUSH);
}
@@@ -979,20 -978,20 +979,20 @@@ fish_chown (struct vfs_class *me, cons
sgroup = gr->gr_name;
{
PREFIX
- g_snprintf (buf, sizeof(buf),
+ snprintf (buf, sizeof(buf),
"#CHOWN %s /%s\n"
"chown %s /%s 2>/dev/null\n"
"echo '### 000'\n",
- sowner, rpath,
- sowner, rpath);
+ sowner, rpath.s,
+ sowner, rpath.s);
fish_send_command (me, super, buf, OPT_FLUSH);
/* FIXME: what should we report if chgrp succeeds but chown fails? */
- g_snprintf (buf, sizeof(buf),
+ snprintf (buf, sizeof(buf),
"#CHGRP /%s \"/%s\"\n"
"chgrp %s \"/%s\" 2>/dev/null\n"
"echo '### 000'\n",
- sgroup, rpath,
- sgroup, rpath);
+ sgroup, rpath.s,
+ sgroup, rpath.s);
/* fish_send_command(me, super, buf, OPT_FLUSH); */
POSTFIX (OPT_FLUSH)
}
@@@ -1001,11 -1000,11 +1001,11 @@@
static int fish_unlink (struct vfs_class *me, const char *path)
{
PREFIX
- g_snprintf(buf, sizeof(buf),
+ snprintf(buf, sizeof(buf),
"#DELE /%s\n"
"rm -f /%s 2>/dev/null\n"
"echo '### 000'\n",
- rpath, rpath);
+ rpath.s, rpath.s);
POSTFIX(OPT_FLUSH);
}
@@@ -1015,22 -1014,22 +1015,22 @@@ static int fish_mkdir (struct vfs_clas
(void) mode;
- g_snprintf(buf, sizeof(buf),
+ snprintf(buf, sizeof(buf),
"#MKD /%s\n"
"mkdir /%s 2>/dev/null\n"
"echo '### 000'\n",
- rpath, rpath);
+ rpath.s, rpath.s);
POSTFIX(OPT_FLUSH);
}
static int fish_rmdir (struct vfs_class *me, const char *path)
{
PREFIX
- g_snprintf(buf, sizeof(buf),
+ snprintf(buf, sizeof(buf),
"#RMD /%s\n"
"rmdir /%s 2>/dev/null\n"
"echo '### 000'\n",
- rpath, rpath);
+ rpath.s, rpath.s);
POSTFIX(OPT_FLUSH);
}
@@@ -1085,7 -1084,7 +1085,7 @@@ fish_fill_names (struct vfs_class *me,
if (SUP.flags > FISH_FLAG_RSH)
{
break;
- g_snprintf (gbuf, sizeof (gbuf), ":%d", SUP.flags);
+ snprintf (gbuf, sizeof (gbuf), ":%d", SUP.flags);
flags = gbuf;
}
break;
@@@ -1094,7 -1093,7 +1094,7 @@@
name = g_strconcat ("/#sh:", SUP.user, "@", SUP.host, flags,
"/", SUP.cwdir, (char *) NULL);
(*func)(name);
- g_free (name);
+ mhl_mem_free (name);
super = super->next;
}
}
--
Midnight Commander Development
More information about the mc-devel
mailing list