Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-03-12 15:47:09 +0300
committerCorinna Vinschen <corinna@vinschen.de>2008-03-12 15:47:09 +0300
commit2b2b42cf59bafffa3cd3021090c8e8636985fd48 (patch)
tree23c46e03e638a625c464bc7ccbb31ff795c71257 /winsup/utils
parentedab6053a24d49f3443fbfdbac2c330caf50b030 (diff)
* cygpath.cc (do_sysfolders): Use cygwin_conv_path.
(do_pathconv): Use cygwin_conv_path and cygwin_conv_path_list. * dumper.cc (main): Use cygwin_conv_path. Allocate target path dynamically. * mkpasswd.c (current_user): Use cygwin_conv_path. (enum_users): Ditto. * ps.cc (NT_MAX_PATH): Define. (main): Use cygwin_conv_path. * regtool.cc (find_key): Ditto. Allocate target path dynamically. (cmd_save): Ditto.
Diffstat (limited to 'winsup/utils')
-rw-r--r--winsup/utils/ChangeLog13
-rw-r--r--winsup/utils/cygpath.cc27
-rw-r--r--winsup/utils/dumper.cc8
-rw-r--r--winsup/utils/mkpasswd.c6
-rw-r--r--winsup/utils/ps.cc14
-rw-r--r--winsup/utils/regtool.cc14
6 files changed, 53 insertions, 29 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 428de6742..54e759208 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,16 @@
+2008-03-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygpath.cc (do_sysfolders): Use cygwin_conv_path.
+ (do_pathconv): Use cygwin_conv_path and cygwin_conv_path_list.
+ * dumper.cc (main): Use cygwin_conv_path. Allocate target path
+ dynamically.
+ * mkpasswd.c (current_user): Use cygwin_conv_path.
+ (enum_users): Ditto.
+ * ps.cc (NT_MAX_PATH): Define.
+ (main): Use cygwin_conv_path.
+ * regtool.cc (find_key): Ditto. Allocate target path dynamically.
+ (cmd_save): Ditto.
+
2008-03-11 Brian Dessent <brian@dessent.net>
* cygcheck.cc (find_app_on_path): Make buffer SYMLINK_MAX + 1
diff --git a/winsup/utils/cygpath.cc b/winsup/utils/cygpath.cc
index 1f4588da9..b9eb13698 100644
--- a/winsup/utils/cygpath.cc
+++ b/winsup/utils/cygpath.cc
@@ -607,7 +607,8 @@ do_sysfolders (char option)
}
else if (!windows_flag)
{
- if (cygwin_conv_to_posix_path (buf, buf2))
+ if (cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_RELATIVE, buf, buf2,
+ MAX_PATH))
fprintf (stderr, "%s: error converting \"%s\" - %s\n",
prog_name, buf, strerror (errno));
else
@@ -646,8 +647,10 @@ do_pathconv (char *filename)
{
char *buf;
DWORD len;
- int err;
- int (*conv_func) (const char *, char *);
+ ssize_t err;
+ cygwin_conv_path_t conv_func =
+ (unix_flag ? CCP_WIN_A_TO_POSIX : CCP_POSIX_TO_WIN_A)
+ | (absolute_flag ? CCP_ABSOLUTE : CCP_RELATIVE);
if (!path_flag)
{
@@ -662,10 +665,8 @@ do_pathconv (char *filename)
exit (1);
}
}
- else if (unix_flag)
- len = cygwin_win32_to_posix_path_list_buf_size (filename);
else
- len = cygwin_posix_to_win32_path_list_buf_size (filename);
+ len = cygwin_conv_path_list (conv_func, filename, NULL, 0);
buf = (char *) malloc (len);
if (buf == NULL)
@@ -676,11 +677,9 @@ do_pathconv (char *filename)
if (path_flag)
{
- if (unix_flag)
- err = cygwin_win32_to_posix_path_list (filename, buf);
- else
+ err = cygwin_conv_path_list (conv_func, filename, buf, len);
+ if (!unix_flag)
{
- err = cygwin_posix_to_win32_path_list (filename, buf);
if (err)
/* oops */;
buf = get_device_paths (buf);
@@ -700,13 +699,7 @@ do_pathconv (char *filename)
}
else
{
- if (unix_flag)
- conv_func = (absolute_flag ? cygwin_conv_to_full_posix_path :
- cygwin_conv_to_posix_path);
- else
- conv_func = (absolute_flag ? cygwin_conv_to_full_win32_path :
- cygwin_conv_to_win32_path);
- err = conv_func (filename, buf);
+ err = cygwin_conv_path (conv_func, filename, buf, len);
if (err)
{
fprintf (stderr, "%s: error converting \"%s\" - %s\n",
diff --git a/winsup/utils/dumper.cc b/winsup/utils/dumper.cc
index 6d48ff8bb..616c36bbe 100644
--- a/winsup/utils/dumper.cc
+++ b/winsup/utils/dumper.cc
@@ -888,7 +888,6 @@ main (int argc, char **argv)
int opt;
const char *p = "";
DWORD pid;
- char win32_name [MAX_PATH];
while ((opt = getopt_long (argc, argv, "dqhv", longopts, NULL) ) != EOF)
switch (opt)
@@ -911,8 +910,11 @@ main (int argc, char **argv)
if (argv && *(argv + optind) && *(argv + optind +1))
{
- *win32_name = '\0';
- cygwin_conv_to_win32_path (*(argv + optind), win32_name);
+ ssize_t len = cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_RELATIVE,
+ *(argv + optind), NULL, 0);
+ char *win32_name = (char *) alloca (len);
+ cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_RELATIVE, *(argv + optind),
+ win32_name, len);
if ((p = strrchr (win32_name, '\\')))
p++;
else
diff --git a/winsup/utils/mkpasswd.c b/winsup/utils/mkpasswd.c
index 63cfa27b8..f51bb659b 100644
--- a/winsup/utils/mkpasswd.c
+++ b/winsup/utils/mkpasswd.c
@@ -197,7 +197,8 @@ current_user (int print_sids, int print_cygpath,
strlcat (homedir_w32, "\\", sizeof (homedir_w32));
strlcat (homedir_w32, envhomepath, sizeof (homedir_w32));
if (print_cygpath)
- cygwin_conv_to_posix_path (homedir_w32, homedir_psx);
+ cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, homedir_w32,
+ homedir_psx, MAX_PATH);
else
psx_dir (homedir_w32, homedir_psx);
}
@@ -298,7 +299,8 @@ enum_users (LPWSTR servername, int print_sids, int print_cygpath,
if (homedir_w32[0] != '\0')
{
if (print_cygpath)
- cygwin_conv_to_posix_path (homedir_w32, homedir_psx);
+ cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE,
+ homedir_w32, homedir_psx, MAX_PATH);
else
psx_dir (homedir_w32, homedir_psx);
}
diff --git a/winsup/utils/ps.cc b/winsup/utils/ps.cc
index 2a0ef01c8..5d7559305 100644
--- a/winsup/utils/ps.cc
+++ b/winsup/utils/ps.cc
@@ -20,6 +20,10 @@ details. */
#include <tlhelp32.h>
#include <psapi.h>
+/* Maximum possible path length under NT. There's no official define
+ for that value. Note that PATH_MAX is only 4K. */
+#define NT_MAX_PATH 32768
+
static const char version[] = "$Revision$";
static char *prog_name;
@@ -355,7 +359,9 @@ main (int argc, char *argv[])
else if (p->process_state & PID_TTYOU)
status = 'O';
- char pname[PATH_MAX];
+ /* Maximum possible path length under NT. There's no official define
+ for that value. */
+ char pname[NT_MAX_PATH];
if (p->process_state & PID_EXITED || (p->exitcode & ~0xffff))
strcpy (pname, "<defunct>");
else if (p->ppid)
@@ -363,9 +369,11 @@ main (int argc, char *argv[])
char *s;
pname[0] = '\0';
if (p->version >= EXTERNAL_PINFO_VERSION_32_LP)
- cygwin_conv_to_posix_path (p->progname_long, pname);
+ cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE,
+ p->progname_long, pname, NT_MAX_PATH);
else
- cygwin_conv_to_posix_path (p->progname, pname);
+ cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE,
+ p->progname, pname, NT_MAX_PATH);
s = strchr (pname, '\0') - 4;
if (s > pname && strcasecmp (s, ".exe") == 0)
*s = '\0';
diff --git a/winsup/utils/regtool.cc b/winsup/utils/regtool.cc
index 6da9845f9..4bda9e646 100644
--- a/winsup/utils/regtool.cc
+++ b/winsup/utils/regtool.cc
@@ -414,8 +414,11 @@ find_key (int howmanyparts, REGSAM access, int option = 0)
}
else if (argv[1])
{
- char win32_path[MAX_PATH];
- cygwin_conv_to_win32_path (argv[1], win32_path);
+ ssize_t len = cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_RELATIVE,
+ argv[1], NULL, 0);
+ char win32_path[len];
+ cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_RELATIVE, argv[1],
+ win32_path, len);
rv = RegLoadKey (base, n, win32_path);
if (rv != ERROR_SUCCESS)
Fail (rv);
@@ -849,8 +852,11 @@ cmd_save ()
set_privilege (SE_BACKUP_NAME);
/* REG_OPTION_BACKUP_RESTORE is necessary to save /HKLM/SECURITY */
find_key (1, KEY_QUERY_VALUE, REG_OPTION_BACKUP_RESTORE);
- char win32_path[MAX_PATH];
- cygwin_conv_to_win32_path (argv[1], win32_path);
+ ssize_t len = cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_RELATIVE,
+ argv[1], NULL, 0);
+ char win32_path[len];
+ cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_RELATIVE, argv[1],
+ win32_path, len);
DWORD rv = RegSaveKey (key, win32_path, NULL);
if (rv != ERROR_SUCCESS)
Fail (rv);