mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
gpgtar,w32: Support file names longer than MAX_PATH.
* tools/gpgtar.c: Replace assert by log_assert. * tools/gpgtar-extract.c: Ditto. (extract_regular): Create files with sysopen flag. * tools/gpgtar-create.c (scan_directory): Use gpgrt_fname_to_wchar. -- Note that for this change libgpg-error 1.45 is required for Windows.
This commit is contained in:
parent
6afedbcd47
commit
70b738f93f
@ -36,7 +36,6 @@
|
|||||||
# include <pwd.h>
|
# include <pwd.h>
|
||||||
# include <grp.h>
|
# include <grp.h>
|
||||||
#endif /*!HAVE_W32_SYSTEM*/
|
#endif /*!HAVE_W32_SYSTEM*/
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include "../common/i18n.h"
|
#include "../common/i18n.h"
|
||||||
#include "../common/exectool.h"
|
#include "../common/exectool.h"
|
||||||
@ -114,7 +113,7 @@ fillup_entry_w32 (tar_header_t hdr)
|
|||||||
for (p=hdr->name; *p; p++)
|
for (p=hdr->name; *p; p++)
|
||||||
if (*p == '/')
|
if (*p == '/')
|
||||||
*p = '\\';
|
*p = '\\';
|
||||||
wfname = utf8_to_wchar (hdr->name);
|
wfname = gpgrt_fname_to_wchar (hdr->name);
|
||||||
for (p=hdr->name; *p; p++)
|
for (p=hdr->name; *p; p++)
|
||||||
if (*p == '\\')
|
if (*p == '\\')
|
||||||
*p = '/';
|
*p = '/';
|
||||||
@ -345,7 +344,7 @@ scan_directory (const char *dname, scanctrl_t scanctrl)
|
|||||||
for (p=fname; *p; p++)
|
for (p=fname; *p; p++)
|
||||||
if (*p == '/')
|
if (*p == '/')
|
||||||
*p = '\\';
|
*p = '\\';
|
||||||
wfname = utf8_to_wchar (fname);
|
wfname = gpgrt_fname_to_wchar (fname);
|
||||||
xfree (fname);
|
xfree (fname);
|
||||||
if (!wfname)
|
if (!wfname)
|
||||||
{
|
{
|
||||||
@ -448,7 +447,7 @@ scan_recursive (const char *dname, scanctrl_t scanctrl)
|
|||||||
}
|
}
|
||||||
scanctrl->nestlevel++;
|
scanctrl->nestlevel++;
|
||||||
|
|
||||||
assert (scanctrl->flist_tail);
|
log_assert (scanctrl->flist_tail);
|
||||||
start_tail = scanctrl->flist_tail;
|
start_tail = scanctrl->flist_tail;
|
||||||
scan_directory (dname, scanctrl);
|
scan_directory (dname, scanctrl);
|
||||||
stop_tail = scanctrl->flist_tail;
|
stop_tail = scanctrl->flist_tail;
|
||||||
@ -903,7 +902,7 @@ write_file (estream_t stream, tar_header_t hdr)
|
|||||||
|
|
||||||
if (hdr->typeflag == TF_REGULAR)
|
if (hdr->typeflag == TF_REGULAR)
|
||||||
{
|
{
|
||||||
infp = es_fopen (hdr->name, "rb");
|
infp = es_fopen (hdr->name, "rb,sysopen");
|
||||||
if (!infp)
|
if (!infp)
|
||||||
{
|
{
|
||||||
err = gpg_error_from_syserror ();
|
err = gpg_error_from_syserror ();
|
||||||
@ -1142,7 +1141,7 @@ gpgtar_create (char **inpattern, const char *files_from, int null_names,
|
|||||||
if (!strcmp (opt.outfile, "-"))
|
if (!strcmp (opt.outfile, "-"))
|
||||||
outstream = es_stdout;
|
outstream = es_stdout;
|
||||||
else
|
else
|
||||||
outstream = es_fopen (opt.outfile, "wb");
|
outstream = es_fopen (opt.outfile, "wb,sysopen");
|
||||||
if (!outstream)
|
if (!outstream)
|
||||||
{
|
{
|
||||||
err = gpg_error_from_syserror ();
|
err = gpg_error_from_syserror ();
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include "../common/i18n.h"
|
#include "../common/i18n.h"
|
||||||
#include "../common/exectool.h"
|
#include "../common/exectool.h"
|
||||||
@ -98,9 +97,9 @@ extract_regular (estream_t stream, const char *dirname,
|
|||||||
|
|
||||||
|
|
||||||
if (opt.dry_run)
|
if (opt.dry_run)
|
||||||
outfp = es_fopenmem (0, "wb");
|
outfp = es_fopen ("/dev/null", "wb");
|
||||||
else
|
else
|
||||||
outfp = es_fopen (fname, "wb");
|
outfp = es_fopen (fname, "wb,sysopen");
|
||||||
if (!outfp)
|
if (!outfp)
|
||||||
{
|
{
|
||||||
err = gpg_error_from_syserror ();
|
err = gpg_error_from_syserror ();
|
||||||
@ -333,7 +332,7 @@ gpgtar_extract (const char *filename, int decrypt)
|
|||||||
if (!strcmp (filename, "-"))
|
if (!strcmp (filename, "-"))
|
||||||
stream = es_stdin;
|
stream = es_stdin;
|
||||||
else
|
else
|
||||||
stream = es_fopen (filename, "rb");
|
stream = es_fopen (filename, "rb,sysopen");
|
||||||
if (!stream)
|
if (!stream)
|
||||||
{
|
{
|
||||||
err = gpg_error_from_syserror ();
|
err = gpg_error_from_syserror ();
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#define INCLUDED_BY_MAIN_MODULE 1
|
#define INCLUDED_BY_MAIN_MODULE 1
|
||||||
#include "../common/util.h"
|
#include "../common/util.h"
|
||||||
@ -261,7 +260,7 @@ shell_parse_stringlist (const char *str, strlist_t *r_list)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case doublequote:
|
case doublequote:
|
||||||
assert (s > str || !"cannot be quoted at first char");
|
log_assert (s > str || !"cannot be quoted at first char");
|
||||||
if (*s == doublequote && *(s - 1) != '\\')
|
if (*s == doublequote && *(s - 1) != '\\')
|
||||||
quoted = unquoted;
|
quoted = unquoted;
|
||||||
else
|
else
|
||||||
@ -269,7 +268,7 @@ shell_parse_stringlist (const char *str, strlist_t *r_list)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
assert (! "reached");
|
log_assert (! "reached");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user