mirror of
https://github.com/reactos/wine.git
synced 2024-11-24 12:20:07 +00:00
Utility to convert between Unix and Windows paths at the command
line.
This commit is contained in:
parent
9414adf75e
commit
0d8a9fac90
3
configure
vendored
3
configure
vendored
@ -12406,7 +12406,7 @@ MAKE_DLL_RULES=dlls/Makedll.rules
|
||||
MAKE_PROG_RULES=programs/Makeprog.rules
|
||||
|
||||
|
||||
ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules programs/Makeprog.rules Makefile controls/Makefile debugger/Makefile dlls/Makefile dlls/advapi32/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/gdi/Makefile dlls/glu32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/kernel/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msg711/Makefile dlls/msdmo/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msrle32/Makefile dlls/msvcrt/Makefile dlls/msvcrt20/Makefile dlls/msvideo/Makefile dlls/netapi32/Makefile dlls/ntdll/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleaut32/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/user/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winspool/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile files/Makefile graphics/Makefile graphics/x11drv/Makefile if1632/Makefile include/Makefile library/Makefile libtest/Makefile loader/Makefile loader/ne/Makefile memory/Makefile misc/Makefile miscemu/Makefile msdos/Makefile objects/Makefile ole/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/notepad/Makefile programs/osversioncheck/Makefile programs/progman/Makefile programs/regapi/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/regtest/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineconsole/Makefile programs/winemine/Makefile programs/winetest/Makefile programs/winhelp/Makefile programs/winver/Makefile relay32/Makefile scheduler/Makefile server/Makefile tools/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/wmc/Makefile tools/wrc/Makefile tsx11/Makefile unicode/Makefile win32/Makefile windows/Makefile"
|
||||
ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules programs/Makeprog.rules Makefile controls/Makefile debugger/Makefile dlls/Makefile dlls/advapi32/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/gdi/Makefile dlls/glu32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/kernel/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msg711/Makefile dlls/msdmo/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msrle32/Makefile dlls/msvcrt/Makefile dlls/msvcrt20/Makefile dlls/msvideo/Makefile dlls/netapi32/Makefile dlls/ntdll/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleaut32/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/user/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winspool/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile files/Makefile graphics/Makefile graphics/x11drv/Makefile if1632/Makefile include/Makefile library/Makefile libtest/Makefile loader/Makefile loader/ne/Makefile memory/Makefile misc/Makefile miscemu/Makefile msdos/Makefile objects/Makefile ole/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/notepad/Makefile programs/osversioncheck/Makefile programs/progman/Makefile programs/regapi/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/regtest/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineconsole/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winhelp/Makefile programs/winver/Makefile relay32/Makefile scheduler/Makefile server/Makefile tools/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/wmc/Makefile tools/wrc/Makefile tsx11/Makefile unicode/Makefile win32/Makefile windows/Makefile"
|
||||
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
@ -13011,6 +13011,7 @@ do
|
||||
"programs/wcmd/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/wcmd/Makefile" ;;
|
||||
"programs/wineconsole/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/wineconsole/Makefile" ;;
|
||||
"programs/winemine/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/winemine/Makefile" ;;
|
||||
"programs/winepath/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/winepath/Makefile" ;;
|
||||
"programs/winetest/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/winetest/Makefile" ;;
|
||||
"programs/winhelp/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/winhelp/Makefile" ;;
|
||||
"programs/winver/Makefile" ) CONFIG_FILES="$CONFIG_FILES programs/winver/Makefile" ;;
|
||||
|
@ -1374,6 +1374,7 @@ programs/view/Makefile
|
||||
programs/wcmd/Makefile
|
||||
programs/wineconsole/Makefile
|
||||
programs/winemine/Makefile
|
||||
programs/winepath/Makefile
|
||||
programs/winetest/Makefile
|
||||
programs/winhelp/Makefile
|
||||
programs/winver/Makefile
|
||||
|
@ -14,6 +14,7 @@ INSTALLSUBDIRS = \
|
||||
wcmd \
|
||||
wineconsole \
|
||||
winemine \
|
||||
winepath \
|
||||
winhelp \
|
||||
winver
|
||||
|
||||
|
3
programs/winepath/.cvsignore
Normal file
3
programs/winepath/.cvsignore
Normal file
@ -0,0 +1,3 @@
|
||||
Makefile
|
||||
winepath
|
||||
winepath.spec.c
|
11
programs/winepath/Makefile.in
Normal file
11
programs/winepath/Makefile.in
Normal file
@ -0,0 +1,11 @@
|
||||
TOPSRCDIR = @top_srcdir@
|
||||
TOPOBJDIR = ../..
|
||||
SRCDIR = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
MODULE = winepath
|
||||
|
||||
C_SRCS = winepath.c
|
||||
|
||||
@MAKE_PROG_RULES@
|
||||
|
||||
### Dependencies:
|
169
programs/winepath/winepath.c
Normal file
169
programs/winepath/winepath.c
Normal file
@ -0,0 +1,169 @@
|
||||
/*
|
||||
* Translate between Wine and Unix paths
|
||||
*
|
||||
* Copyright 2002 Mike Wetherell
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define VERSION "0.1 (" PACKAGE_STRING ")"
|
||||
|
||||
enum {
|
||||
SHORTFORMAT = 1,
|
||||
LONGFORMAT = 2,
|
||||
UNIXFORMAT = 4
|
||||
};
|
||||
|
||||
static char *progname;
|
||||
|
||||
/* Wine specific functions */
|
||||
extern BOOL process_init(char *argv[]);
|
||||
typedef BOOL (WINAPI *wine_get_unix_file_name_t) ( LPCSTR dos, LPSTR buffer, DWORD len );
|
||||
/*
|
||||
* handle an option
|
||||
*/
|
||||
int option(int shortopt, char *longopt)
|
||||
{
|
||||
const char *helpmsg =
|
||||
"Convert PATH(s) to Unix or Windows long or short paths.\n"
|
||||
"\n"
|
||||
" -u, --unix output Unix format\n"
|
||||
" -l, --long output Windows long format\n"
|
||||
" -s, --short output Windows short format \n"
|
||||
" -h, --help output this help message and exit\n"
|
||||
" -v, --version output version information and exit\n"
|
||||
"\n"
|
||||
"The input paths can be in any format. If more than one option is given\n"
|
||||
"then the input paths are output in all formats specified, in the order\n"
|
||||
"Unix, long, short. If no option is given the default is Unix format.\n";
|
||||
|
||||
switch (shortopt) {
|
||||
case 'h':
|
||||
printf("Usage: %s [OPTION] [PATH]...\n", progname);
|
||||
printf(helpmsg);
|
||||
exit(0);
|
||||
case 'v':
|
||||
printf("%s version " VERSION "\n", progname);
|
||||
exit(0);
|
||||
case 'l':
|
||||
return LONGFORMAT;
|
||||
case 's':
|
||||
return SHORTFORMAT;
|
||||
case 'u':
|
||||
return UNIXFORMAT;
|
||||
}
|
||||
|
||||
fprintf(stderr, "%s: invalid option ", progname);
|
||||
if (longopt)
|
||||
fprintf(stderr, "'%s'\n", longopt);
|
||||
else
|
||||
fprintf(stderr, "'-%c'\n", shortopt);
|
||||
fprintf(stderr, "Try '%s --help' for help\n", progname);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse command line options
|
||||
*/
|
||||
int parse_options(char *argv[])
|
||||
{
|
||||
int outputformats = 0;
|
||||
int done = 0;
|
||||
char *longopts[] = { "long", "short", "unix", "help", "version", "" };
|
||||
int i, j;
|
||||
|
||||
for (i = 1; argv[i] && !done; )
|
||||
{
|
||||
if (argv[i][0] != '-') {
|
||||
/* not an option */
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (argv[i][1] == '-') {
|
||||
if (argv[i][2] == 0) {
|
||||
/* '--' end of options */
|
||||
done = 1;
|
||||
} else {
|
||||
/* long option */
|
||||
for (j = 0; longopts[j][0]; j++)
|
||||
if (strcmp(argv[i]+2, longopts[j]) == 0)
|
||||
break;
|
||||
outputformats |= option(longopts[j][0], argv[i]);
|
||||
}
|
||||
} else {
|
||||
/* short options */
|
||||
for (j = 1; argv[i][j]; j++)
|
||||
outputformats |= option(argv[i][j], NULL);
|
||||
}
|
||||
|
||||
/* remove option */
|
||||
for (j = i + 1; argv[j - 1]; j++)
|
||||
argv[j - 1] = argv[j];
|
||||
}
|
||||
|
||||
return outputformats;
|
||||
}
|
||||
|
||||
/*
|
||||
* Main function
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
wine_get_unix_file_name_t wine_get_unix_file_name_ptr = NULL;
|
||||
static char path[MAX_PATH];
|
||||
int outputformats;
|
||||
int i;
|
||||
|
||||
progname = argv[0];
|
||||
outputformats = parse_options(argv);
|
||||
if (outputformats == 0)
|
||||
outputformats = UNIXFORMAT;
|
||||
|
||||
if (outputformats & UNIXFORMAT) {
|
||||
wine_get_unix_file_name_ptr = (wine_get_unix_file_name_t)
|
||||
GetProcAddress(GetModuleHandle("KERNEL32"),
|
||||
"wine_get_unix_file_name");
|
||||
if (wine_get_unix_file_name_ptr == NULL) {
|
||||
fprintf(stderr, "%s: cannot get the address of "
|
||||
"'wine_get_unix_file_name'\n", progname);
|
||||
exit(3);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 1; argv[i]; i++)
|
||||
{
|
||||
if (outputformats & LONGFORMAT) {
|
||||
GetLongPathNameA(argv[i], path, sizeof(path));
|
||||
printf("%s\n", path);
|
||||
}
|
||||
if (outputformats & SHORTFORMAT) {
|
||||
GetShortPathNameA(argv[i], path, sizeof(path));
|
||||
printf("%s\n", path);
|
||||
}
|
||||
if (outputformats & UNIXFORMAT) {
|
||||
wine_get_unix_file_name_ptr(argv[i], path, sizeof(path));
|
||||
printf("%s\n", path);
|
||||
}
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
6
programs/winepath/winepath.spec
Normal file
6
programs/winepath/winepath.spec
Normal file
@ -0,0 +1,6 @@
|
||||
name winepath
|
||||
mode cuiexe
|
||||
type win32
|
||||
|
||||
import kernel32.dll
|
||||
import ntdll.dll
|
Loading…
Reference in New Issue
Block a user