mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
vms: support --backups
This commit is contained in:
parent
e9cc8b2f7c
commit
eee1589ef3
@ -1,3 +1,7 @@
|
|||||||
|
2013-07-08 Steven M. Schweda <sms@antinode.info>
|
||||||
|
|
||||||
|
* retr.c (rotate_backups): Support for VMS files.
|
||||||
|
|
||||||
2013-07-12 Giuseppe Scrivano <gscrivano@gnu.org>
|
2013-07-12 Giuseppe Scrivano <gscrivano@gnu.org>
|
||||||
|
|
||||||
* http.c (digest_authentication_encode): Set default value of
|
* http.c (digest_authentication_encode): Set default value of
|
||||||
|
32
src/retr.c
32
src/retr.c
@ -37,6 +37,9 @@ as that of the covered work. */
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#ifdef VMS
|
||||||
|
# include <unixio.h> /* For delete(). */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "exits.h"
|
#include "exits.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
@ -1182,7 +1185,16 @@ free_urlpos (struct urlpos *l)
|
|||||||
void
|
void
|
||||||
rotate_backups(const char *fname)
|
rotate_backups(const char *fname)
|
||||||
{
|
{
|
||||||
int maxlen = strlen (fname) + 1 + numdigit (opt.backups) + 1;
|
#ifdef __VMS
|
||||||
|
# define SEP "_"
|
||||||
|
# define AVS ";*" /* All-version suffix. */
|
||||||
|
# define AVSL (sizeof (AVS) - 1)
|
||||||
|
#else
|
||||||
|
# define SEP "."
|
||||||
|
# define AVSL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int maxlen = strlen (fname) + sizeof (SEP) + numdigit (opt.backups) + AVSL;
|
||||||
char *from = (char *)alloca (maxlen);
|
char *from = (char *)alloca (maxlen);
|
||||||
char *to = (char *)alloca (maxlen);
|
char *to = (char *)alloca (maxlen);
|
||||||
struct_stat sb;
|
struct_stat sb;
|
||||||
@ -1194,12 +1206,24 @@ rotate_backups(const char *fname)
|
|||||||
|
|
||||||
for (i = opt.backups; i > 1; i--)
|
for (i = opt.backups; i > 1; i--)
|
||||||
{
|
{
|
||||||
sprintf (from, "%s.%d", fname, i - 1);
|
#ifdef VMS
|
||||||
sprintf (to, "%s.%d", fname, i);
|
/* Delete (all versions of) any existing max-suffix file, to avoid
|
||||||
|
* creating multiple versions of it. (On VMS, rename() will
|
||||||
|
* create a new version of an existing destination file, not
|
||||||
|
* destroy/overwrite it.)
|
||||||
|
*/
|
||||||
|
if (i == opt.backups)
|
||||||
|
{
|
||||||
|
sprintf (to, "%s%s%d%s", fname, SEP, i, AVS);
|
||||||
|
delete (to);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
sprintf (to, "%s%s%d", fname, SEP, i);
|
||||||
|
sprintf (from, "%s%s%d", fname, SEP, i - 1);
|
||||||
rename (from, to);
|
rename (from, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf (to, "%s.%d", fname, 1);
|
sprintf (to, "%s%s%d", fname, SEP, 1);
|
||||||
rename(fname, to);
|
rename(fname, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user