1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-04-15 11:36:40 +02:00

Add ls command.

Allows listing repo paths/files from the command-line, to be used primarily for testing and debugging.

This command is internal-only so the interface may change at any time without notice.
This commit is contained in:
David Steele 2019-05-28 10:03:48 -04:00
parent 3b3327eae6
commit 20e5b92f36
18 changed files with 413 additions and 6 deletions

View File

@ -108,6 +108,8 @@ use constant CFGCMD_START => 'start';
push @EXPORT, qw(CFGCMD_START);
use constant CFGCMD_STOP => 'stop';
push @EXPORT, qw(CFGCMD_STOP);
use constant CFGCMD_STORAGE_LIST => 'ls';
push @EXPORT, qw(CFGCMD_STORAGE_LIST);
use constant CFGCMD_VERSION => 'version';
push @EXPORT, qw(CFGCMD_VERSION);
@ -157,6 +159,13 @@ use constant CFGOPT_PROCESS => 'process'
use constant CFGOPT_HOST_ID => 'host-id';
push @EXPORT, qw(CFGOPT_HOST_ID);
# Command-line only storage options
#-----------------------------------------------------------------------------------------------------------------------------------
use constant CFGOPT_FILTER => 'filter';
push @EXPORT, qw(CFGOPT_FILTER);
use constant CFGOPT_SORT => 'sort';
push @EXPORT, qw(CFGOPT_SORT);
# Command-line only test options
#-----------------------------------------------------------------------------------------------------------------------------------
use constant CFGOPT_TEST => 'test';
@ -681,6 +690,13 @@ my $rhCommandDefine =
{
},
&CFGCMD_STORAGE_LIST =>
{
&CFGDEF_LOG_FILE => false,
&CFGDEF_LOG_LEVEL_DEFAULT => DEBUG,
&CFGDEF_PARAMETER_ALLOWED => true,
},
&CFGCMD_VERSION =>
{
&CFGDEF_LOG_FILE => false,
@ -718,6 +734,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -1049,6 +1066,33 @@ my %hConfigDefine =
},
},
# Command-line only storage options
#-------------------------------------------------------------------------------------------------------------------------------
&CFGOPT_FILTER =>
{
&CFGDEF_TYPE => CFGDEF_TYPE_STRING,
&CFGDEF_REQUIRED => false,
&CFGDEF_COMMAND =>
{
&CFGCMD_STORAGE_LIST => {},
}
},
&CFGOPT_SORT =>
{
&CFGDEF_TYPE => CFGDEF_TYPE_STRING,
&CFGDEF_DEFAULT => 'asc',
&CFGDEF_ALLOW_LIST =>
[
'asc',
'desc',
],
&CFGDEF_COMMAND =>
{
&CFGCMD_STORAGE_LIST => {},
}
},
# Command-line only test options
#-------------------------------------------------------------------------------------------------------------------------------
&CFGOPT_TEST =>
@ -1138,6 +1182,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_CREATE => {},
&CFGCMD_STANZA_DELETE => {},
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -1160,6 +1205,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_CREATE => {},
&CFGCMD_STANZA_DELETE => {},
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -1261,6 +1307,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -1286,6 +1333,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
},
},
@ -1337,6 +1385,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
},
},
@ -1387,6 +1436,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_CREATE => {},
&CFGCMD_STANZA_DELETE => {},
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -1491,6 +1541,7 @@ my %hConfigDefine =
},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
},
},
@ -1517,6 +1568,7 @@ my %hConfigDefine =
&CFGCMD_RESTORE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
},
&CFGDEF_DEPEND =>
{
@ -1767,6 +1819,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
},
},
@ -1870,6 +1923,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
},
},
@ -1952,6 +2006,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -1985,6 +2040,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -2012,6 +2068,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
}
},
@ -2038,6 +2095,7 @@ my %hConfigDefine =
&CFGCMD_STANZA_UPGRADE => {},
&CFGCMD_START => {},
&CFGCMD_STOP => {},
&CFGCMD_STORAGE_LIST => {},
}
},

View File

@ -196,7 +196,7 @@ sub process
foreach my $strCommand (cfgDefineCommandList())
{
if ($strCommand eq CFGCMD_REMOTE || $strCommand eq CFGCMD_LOCAL || $strCommand eq CFGCMD_ARCHIVE_GET_ASYNC ||
$strCommand eq CFGCMD_ARCHIVE_PUSH_ASYNC)
$strCommand eq CFGCMD_ARCHIVE_PUSH_ASYNC || $strCommand eq CFGCMD_STORAGE_LIST)
{
next;
}

View File

@ -1218,6 +1218,23 @@
</command-example-list>
</command>
<!-- OPERATION - STORAGE-LIST COMMAND -->
<command id="storage-list" name="Storage List">
<summary>List paths/files in the repository.</summary>
<text>This is intended to be a general purpose list function, but for now it only works on the repository.</text>
<command-example-list>
<command-example title="List all backups in a stanza">
<text><code-block title="">
{[backrest-exe]} storage-list backup/demo
</code-block>
List all backups in the demo stanza.</text>
</command-example>
</command-example-list>
</command>
<!-- OPERATION - VERSION COMMAND -->
<command id="version" name="Version">
<summary>Get version.</summary>

View File

@ -182,7 +182,7 @@
<variable key="host-repo1-mount">{[host-mount]}</variable>
<!-- Commands for various operations -->
<variable key="cmd-backup-last">ls -1 {[backrest-repo-path]}/backup/demo | tail -5 | head -1</variable>
<variable key="cmd-backup-last">pgbackrest ls backup/demo --filter="(F|D|I)$" --sort=desc | head -1</variable>
<!-- Data used to demonstrate backup/restore operations -->
<variable key="test-table-data">Important Data</variable>

View File

@ -25,6 +25,9 @@ sub libcAutoConstant
CFGOPTVAL_REPO_TYPE_POSIX => 'posix',
CFGOPTVAL_REPO_TYPE_S3 => 's3',
CFGOPTVAL_SORT_ASC => 'asc',
CFGOPTVAL_SORT_DESC => 'desc',
CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE => 'pause',
CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE => 'promote',
CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN => 'shutdown',
@ -87,6 +90,8 @@ sub libcAutoExportTag
'CFGOPTVAL_REPO_TYPE_CIFS',
'CFGOPTVAL_REPO_TYPE_POSIX',
'CFGOPTVAL_REPO_TYPE_S3',
'CFGOPTVAL_SORT_ASC',
'CFGOPTVAL_SORT_DESC',
'CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE',
'CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE',
'CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN',
@ -114,6 +119,7 @@ sub libcAutoExportTag
'CFGCMD_HELP',
'CFGCMD_INFO',
'CFGCMD_LOCAL',
'CFGCMD_LS',
'CFGCMD_REMOTE',
'CFGCMD_RESTORE',
'CFGCMD_STANZA_CREATE',
@ -144,6 +150,7 @@ sub libcAutoExportTag
'CFGOPT_DB_TIMEOUT',
'CFGOPT_DELTA',
'CFGOPT_EXCLUDE',
'CFGOPT_FILTER',
'CFGOPT_FORCE',
'CFGOPT_HOST_ID',
'CFGOPT_LINK_ALL',
@ -272,6 +279,7 @@ sub libcAutoExportTag
'CFGOPT_REPO_TYPE',
'CFGOPT_RESUME',
'CFGOPT_SET',
'CFGOPT_SORT',
'CFGOPT_SPOOL_PATH',
'CFGOPT_STANZA',
'CFGOPT_START_FAST',

View File

@ -58,6 +58,7 @@ SRCS = \
command/restore/file.c \
command/restore/protocol.c \
command/remote/remote.c \
command/storage/list.c \
common/compress/gzip/common.c \
common/compress/gzip/compress.c \
common/compress/gzip/decompress.c \
@ -236,6 +237,9 @@ command/restore/file.o: command/restore/file.c build.auto.h command/restore/file
command/restore/protocol.o: command/restore/protocol.c build.auto.h command/restore/file.h command/restore/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
$(CC) $(CFLAGS) $(CMAKE) -c command/restore/protocol.c -o command/restore/protocol.o
command/storage/list.o: command/storage/list.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
$(CC) $(CFLAGS) $(CMAKE) -c command/storage/list.c -o command/storage/list.o
common/compress/gzip/common.o: common/compress/gzip/common.c build.auto.h common/assert.h common/compress/gzip/common.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/convert.h
$(CC) $(CFLAGS) $(CMAKE) -c common/compress/gzip/common.c -o common/compress/gzip/common.o
@ -410,7 +414,7 @@ info/infoManifest.o: info/infoManifest.c build.auto.h common/error.auto.h common
info/infoPg.o: info/infoPg.c build.auto.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h info/info.h info/infoPg.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
$(CC) $(CFLAGS) $(CMAKE) -c info/infoPg.c -o info/infoPg.o
main.o: main.c build.auto.h command/archive/get/get.h command/archive/push/push.h command/command.h command/help/help.h command/info/info.h command/local/local.h command/remote/remote.h common/assert.h common/debug.h common/error.auto.h common/error.h common/exit.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h perl/exec.h postgres/interface.h version.h
main.o: main.c build.auto.h command/archive/get/get.h command/archive/push/push.h command/command.h command/help/help.h command/info/info.h command/local/local.h command/remote/remote.h command/storage/list.h common/assert.h common/debug.h common/error.auto.h common/error.h common/exit.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h perl/exec.h postgres/interface.h version.h
$(CC) $(CFLAGS) $(CMAKE) -c main.c -o main.o
perl/config.o: perl/config.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h

View File

@ -0,0 +1,64 @@
/***********************************************************************************************************************************
Storage List Command
***********************************************************************************************************************************/
#include "build.auto.h"
#include <unistd.h>
#include "common/debug.h"
#include "common/io/handleWrite.h"
#include "common/memContext.h"
#include "common/log.h"
#include "common/memContext.h"
#include "common/type/string.h"
#include "config/config.h"
#include "storage/helper.h"
/***********************************************************************************************************************************
Render storage list as a string
***********************************************************************************************************************************/
static String *
storageListRender(void)
{
FUNCTION_LOG_VOID(logLevelDebug);
// Get the path if passed
const String *path = NULL;
if (strLstSize(cfgCommandParam()) == 1)
path = strLstGet(cfgCommandParam(), 0);
// Output the list
String *result = strNew("");
StringList *list = storageListP(storageRepo(), path, .nullOnMissing = true, .expression = cfgOptionStr(cfgOptFilter));
if (list != NULL)
{
strLstSort(list, strEqZ(cfgOptionStr(cfgOptSort), "asc") ? sortOrderAsc : sortOrderDesc);
for (unsigned int listIdx = 0; listIdx < strLstSize(list); listIdx++)
{
strCat(result, strPtr(strLstGet(list, listIdx)));
strCat(result, "\n");
}
}
FUNCTION_LOG_RETURN(STRING, result);
}
/***********************************************************************************************************************************
Render storage list and output to stdout
***********************************************************************************************************************************/
void
cmdStorageList(void)
{
FUNCTION_LOG_VOID(logLevelDebug);
MEM_CONTEXT_TEMP_BEGIN()
{
ioHandleWriteOneStr(STDOUT_FILENO, storageListRender());
}
MEM_CONTEXT_TEMP_END();
FUNCTION_LOG_RETURN_VOID();
}

View File

@ -0,0 +1,12 @@
/***********************************************************************************************************************************
Storage List Command
***********************************************************************************************************************************/
#ifndef COMMAND_STORAGE_LIST_H
#define COMMAND_STORAGE_LIST_H
/***********************************************************************************************************************************
Functions
***********************************************************************************************************************************/
void cmdStorageList(void);
#endif

View File

@ -17,6 +17,7 @@ STRING_EXTERN(CFGCMD_EXPIRE_STR, CFGCMD_EXPIR
STRING_EXTERN(CFGCMD_HELP_STR, CFGCMD_HELP);
STRING_EXTERN(CFGCMD_INFO_STR, CFGCMD_INFO);
STRING_EXTERN(CFGCMD_LOCAL_STR, CFGCMD_LOCAL);
STRING_EXTERN(CFGCMD_LS_STR, CFGCMD_LS);
STRING_EXTERN(CFGCMD_REMOTE_STR, CFGCMD_REMOTE);
STRING_EXTERN(CFGCMD_RESTORE_STR, CFGCMD_RESTORE);
STRING_EXTERN(CFGCMD_STANZA_CREATE_STR, CFGCMD_STANZA_CREATE);
@ -161,6 +162,19 @@ static ConfigCommandData configCommandData[CFG_COMMAND_TOTAL] = CONFIG_COMMAND_L
CONFIG_COMMAND_PARAMETER_ALLOWED(false)
)
CONFIG_COMMAND
(
CONFIG_COMMAND_NAME(CFGCMD_LS)
CONFIG_COMMAND_LOG_FILE(false)
CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelDebug)
CONFIG_COMMAND_LOG_LEVEL_STDERR_MAX(logLevelTrace)
CONFIG_COMMAND_LOCK_REQUIRED(false)
CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false)
CONFIG_COMMAND_LOCK_TYPE(lockTypeNone)
CONFIG_COMMAND_PARAMETER_ALLOWED(true)
)
CONFIG_COMMAND
(
CONFIG_COMMAND_NAME(CFGCMD_REMOTE)
@ -291,6 +305,7 @@ STRING_EXTERN(CFGOPT_DB_INCLUDE_STR, CFGOPT_DB_IN
STRING_EXTERN(CFGOPT_DB_TIMEOUT_STR, CFGOPT_DB_TIMEOUT);
STRING_EXTERN(CFGOPT_DELTA_STR, CFGOPT_DELTA);
STRING_EXTERN(CFGOPT_EXCLUDE_STR, CFGOPT_EXCLUDE);
STRING_EXTERN(CFGOPT_FILTER_STR, CFGOPT_FILTER);
STRING_EXTERN(CFGOPT_FORCE_STR, CFGOPT_FORCE);
STRING_EXTERN(CFGOPT_HOST_ID_STR, CFGOPT_HOST_ID);
STRING_EXTERN(CFGOPT_LINK_ALL_STR, CFGOPT_LINK_ALL);
@ -419,6 +434,7 @@ STRING_EXTERN(CFGOPT_REPO1_S3_VERIFY_TLS_STR, CFGOPT_REPO1
STRING_EXTERN(CFGOPT_REPO1_TYPE_STR, CFGOPT_REPO1_TYPE);
STRING_EXTERN(CFGOPT_RESUME_STR, CFGOPT_RESUME);
STRING_EXTERN(CFGOPT_SET_STR, CFGOPT_SET);
STRING_EXTERN(CFGOPT_SORT_STR, CFGOPT_SORT);
STRING_EXTERN(CFGOPT_SPOOL_PATH_STR, CFGOPT_SPOOL_PATH);
STRING_EXTERN(CFGOPT_STANZA_STR, CFGOPT_STANZA);
STRING_EXTERN(CFGOPT_START_FAST_STR, CFGOPT_START_FAST);
@ -615,6 +631,14 @@ static ConfigOptionData configOptionData[CFG_OPTION_TOTAL] = CONFIG_OPTION_LIST
CONFIG_OPTION_DEFINE_ID(cfgDefOptExclude)
)
//------------------------------------------------------------------------------------------------------------------------------
CONFIG_OPTION
(
CONFIG_OPTION_NAME(CFGOPT_FILTER)
CONFIG_OPTION_INDEX(0)
CONFIG_OPTION_DEFINE_ID(cfgDefOptFilter)
)
//------------------------------------------------------------------------------------------------------------------------------
CONFIG_OPTION
(
@ -1639,6 +1663,14 @@ static ConfigOptionData configOptionData[CFG_OPTION_TOTAL] = CONFIG_OPTION_LIST
CONFIG_OPTION_DEFINE_ID(cfgDefOptSet)
)
//------------------------------------------------------------------------------------------------------------------------------
CONFIG_OPTION
(
CONFIG_OPTION_NAME(CFGOPT_SORT)
CONFIG_OPTION_INDEX(0)
CONFIG_OPTION_DEFINE_ID(cfgDefOptSort)
)
//------------------------------------------------------------------------------------------------------------------------------
CONFIG_OPTION
(

View File

@ -29,6 +29,8 @@ Command constants
STRING_DECLARE(CFGCMD_INFO_STR);
#define CFGCMD_LOCAL "local"
STRING_DECLARE(CFGCMD_LOCAL_STR);
#define CFGCMD_LS "ls"
STRING_DECLARE(CFGCMD_LS_STR);
#define CFGCMD_REMOTE "remote"
STRING_DECLARE(CFGCMD_REMOTE_STR);
#define CFGCMD_RESTORE "restore"
@ -46,7 +48,7 @@ Command constants
#define CFGCMD_VERSION "version"
STRING_DECLARE(CFGCMD_VERSION_STR);
#define CFG_COMMAND_TOTAL 19
#define CFG_COMMAND_TOTAL 20
/***********************************************************************************************************************************
Option constants
@ -95,6 +97,8 @@ Option constants
STRING_DECLARE(CFGOPT_DELTA_STR);
#define CFGOPT_EXCLUDE "exclude"
STRING_DECLARE(CFGOPT_EXCLUDE_STR);
#define CFGOPT_FILTER "filter"
STRING_DECLARE(CFGOPT_FILTER_STR);
#define CFGOPT_FORCE "force"
STRING_DECLARE(CFGOPT_FORCE_STR);
#define CFGOPT_HOST_ID "host-id"
@ -351,6 +355,8 @@ Option constants
STRING_DECLARE(CFGOPT_RESUME_STR);
#define CFGOPT_SET "set"
STRING_DECLARE(CFGOPT_SET_STR);
#define CFGOPT_SORT "sort"
STRING_DECLARE(CFGOPT_SORT_STR);
#define CFGOPT_SPOOL_PATH "spool-path"
STRING_DECLARE(CFGOPT_SPOOL_PATH_STR);
#define CFGOPT_STANZA "stanza"
@ -380,7 +386,7 @@ Option constants
#define CFGOPT_TYPE "type"
STRING_DECLARE(CFGOPT_TYPE_STR);
#define CFG_OPTION_TOTAL 164
#define CFG_OPTION_TOTAL 166
/***********************************************************************************************************************************
Command enum
@ -397,6 +403,7 @@ typedef enum
cfgCmdHelp,
cfgCmdInfo,
cfgCmdLocal,
cfgCmdLs,
cfgCmdRemote,
cfgCmdRestore,
cfgCmdStanzaCreate,
@ -435,6 +442,7 @@ typedef enum
cfgOptDbTimeout,
cfgOptDelta,
cfgOptExclude,
cfgOptFilter,
cfgOptForce,
cfgOptHostId,
cfgOptLinkAll,
@ -563,6 +571,7 @@ typedef enum
cfgOptRepoType,
cfgOptResume,
cfgOptSet,
cfgOptSort,
cfgOptSpoolPath,
cfgOptStanza,
cfgOptStartFast,

View File

@ -120,6 +120,11 @@ static ConfigDefineCommandData configDefineCommandData[] = CFGDEFDATA_COMMAND_LI
CFGDEFDATA_COMMAND_NAME("local")
)
CFGDEFDATA_COMMAND
(
CFGDEFDATA_COMMAND_NAME("ls")
)
CFGDEFDATA_COMMAND
(
CFGDEFDATA_COMMAND_NAME("remote")
@ -542,6 +547,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -652,6 +658,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
@ -839,6 +846,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -885,6 +893,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -934,6 +943,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -1010,6 +1020,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
@ -1100,6 +1111,24 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
)
)
// -----------------------------------------------------------------------------------------------------------------------------
CFGDEFDATA_OPTION
(
CFGDEFDATA_OPTION_NAME("filter")
CFGDEFDATA_OPTION_REQUIRED(false)
CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine)
CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString)
CFGDEFDATA_OPTION_INTERNAL(false)
CFGDEFDATA_OPTION_INDEX_TOTAL(1)
CFGDEFDATA_OPTION_SECURE(false)
CFGDEFDATA_OPTION_COMMAND_LIST
(
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
)
)
// -----------------------------------------------------------------------------------------------------------------------------
CFGDEFDATA_OPTION
(
@ -1377,6 +1406,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
@ -1440,6 +1470,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -1521,6 +1552,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -1578,6 +1610,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -1623,6 +1656,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -1668,6 +1702,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
@ -1751,6 +1786,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -2508,6 +2544,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -2598,6 +2635,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -2654,6 +2692,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -2742,6 +2781,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
@ -2821,6 +2861,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
@ -2863,6 +2904,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
@ -2906,6 +2948,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
@ -2948,6 +2991,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
@ -2989,6 +3033,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
@ -3034,6 +3079,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
@ -3083,6 +3129,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3290,6 +3337,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3341,6 +3389,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3392,6 +3441,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3443,6 +3493,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3494,6 +3545,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3545,6 +3597,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3610,6 +3663,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3675,6 +3729,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3726,6 +3781,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3778,6 +3834,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3835,6 +3892,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
@ -3925,6 +3983,35 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
)
)
// -----------------------------------------------------------------------------------------------------------------------------
CFGDEFDATA_OPTION
(
CFGDEFDATA_OPTION_NAME("sort")
CFGDEFDATA_OPTION_REQUIRED(true)
CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine)
CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString)
CFGDEFDATA_OPTION_INTERNAL(false)
CFGDEFDATA_OPTION_INDEX_TOTAL(1)
CFGDEFDATA_OPTION_SECURE(false)
CFGDEFDATA_OPTION_COMMAND_LIST
(
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs)
)
CFGDEFDATA_OPTION_OPTIONAL_LIST
(
CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST
(
"asc",
"desc"
)
CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("asc")
)
)
// -----------------------------------------------------------------------------------------------------------------------------
CFGDEFDATA_OPTION
(

View File

@ -21,6 +21,7 @@ typedef enum
cfgDefCmdHelp,
cfgDefCmdInfo,
cfgDefCmdLocal,
cfgDefCmdLs,
cfgDefCmdRemote,
cfgDefCmdRestore,
cfgDefCmdStanzaCreate,
@ -73,6 +74,7 @@ typedef enum
cfgDefOptDbTimeout,
cfgDefOptDelta,
cfgDefOptExclude,
cfgDefOptFilter,
cfgDefOptForce,
cfgDefOptHostId,
cfgDefOptLinkAll,
@ -131,6 +133,7 @@ typedef enum
cfgDefOptRepoType,
cfgDefOptResume,
cfgDefOptSet,
cfgDefOptSort,
cfgDefOptSpoolPath,
cfgDefOptStanza,
cfgDefOptStartFast,

View File

@ -55,7 +55,7 @@ typedef struct ConfigDefineOptionData
unsigned int section:2; // Config section (e.g. global, stanza, cmd-line)
bool required:1; // Is the option required?
bool secure:1; // Does the option need to be redacted on logs and cmd-line?
unsigned int commandValid:18; // Bitmap for commands that the option is valid for
unsigned int commandValid:20; // Bitmap for commands that the option is valid for
const char *helpSection; // Classify the option
const char *helpSummary; // Brief summary of the option

View File

@ -286,6 +286,14 @@ static const struct option optionList[] =
.val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptExclude,
},
// filter option
// -----------------------------------------------------------------------------------------------------------------------------
{
.name = CFGOPT_FILTER,
.has_arg = required_argument,
.val = PARSE_OPTION_FLAG | cfgOptFilter,
},
// force option
// -----------------------------------------------------------------------------------------------------------------------------
{
@ -2100,6 +2108,14 @@ static const struct option optionList[] =
.val = PARSE_OPTION_FLAG | cfgOptSet,
},
// sort option
// -----------------------------------------------------------------------------------------------------------------------------
{
.name = CFGOPT_SORT,
.has_arg = required_argument,
.val = PARSE_OPTION_FLAG | cfgOptSort,
},
// spool-path option
// -----------------------------------------------------------------------------------------------------------------------------
{
@ -2267,6 +2283,7 @@ static const ConfigOption optionResolveOrder[] =
cfgOptDbTimeout,
cfgOptDelta,
cfgOptExclude,
cfgOptFilter,
cfgOptHostId,
cfgOptLinkAll,
cfgOptLinkMap,
@ -2382,6 +2399,7 @@ static const ConfigOption optionResolveOrder[] =
cfgOptRepoType,
cfgOptResume,
cfgOptSet,
cfgOptSort,
cfgOptSpoolPath,
cfgOptStartFast,
cfgOptStopAuto,

View File

@ -14,6 +14,7 @@ Main
#include "command/info/info.h"
#include "command/local/local.h"
#include "command/remote/remote.h"
#include "command/storage/list.h"
#include "common/debug.h"
#include "common/error.h"
#include "common/exit.h"
@ -228,6 +229,14 @@ main(int argListSize, const char *argList[])
break;
}
// Storage list command
// -----------------------------------------------------------------------------------------------------------------
case cfgCmdLs:
{
cmdStorageList();
break;
}
// Display version
// -----------------------------------------------------------------------------------------------------------------
case cfgCmdVersion:

View File

@ -9334,6 +9334,9 @@ static const EmbeddedModule embeddedModule[] =
"CFGOPTVAL_REPO_TYPE_POSIX => 'posix',\n"
"CFGOPTVAL_REPO_TYPE_S3 => 's3',\n"
"\n"
"CFGOPTVAL_SORT_ASC => 'asc',\n"
"CFGOPTVAL_SORT_DESC => 'desc',\n"
"\n"
"CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE => 'pause',\n"
"CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE => 'promote',\n"
"CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN => 'shutdown',\n"
@ -9395,6 +9398,8 @@ static const EmbeddedModule embeddedModule[] =
"'CFGOPTVAL_REPO_TYPE_CIFS',\n"
"'CFGOPTVAL_REPO_TYPE_POSIX',\n"
"'CFGOPTVAL_REPO_TYPE_S3',\n"
"'CFGOPTVAL_SORT_ASC',\n"
"'CFGOPTVAL_SORT_DESC',\n"
"'CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE',\n"
"'CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE',\n"
"'CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN',\n"
@ -9422,6 +9427,7 @@ static const EmbeddedModule embeddedModule[] =
"'CFGCMD_HELP',\n"
"'CFGCMD_INFO',\n"
"'CFGCMD_LOCAL',\n"
"'CFGCMD_LS',\n"
"'CFGCMD_REMOTE',\n"
"'CFGCMD_RESTORE',\n"
"'CFGCMD_STANZA_CREATE',\n"
@ -9452,6 +9458,7 @@ static const EmbeddedModule embeddedModule[] =
"'CFGOPT_DB_TIMEOUT',\n"
"'CFGOPT_DELTA',\n"
"'CFGOPT_EXCLUDE',\n"
"'CFGOPT_FILTER',\n"
"'CFGOPT_FORCE',\n"
"'CFGOPT_HOST_ID',\n"
"'CFGOPT_LINK_ALL',\n"
@ -9580,6 +9587,7 @@ static const EmbeddedModule embeddedModule[] =
"'CFGOPT_REPO_TYPE',\n"
"'CFGOPT_RESUME',\n"
"'CFGOPT_SET',\n"
"'CFGOPT_SORT',\n"
"'CFGOPT_SPOOL_PATH',\n"
"'CFGOPT_STANZA',\n"
"'CFGOPT_START_FAST',\n"

View File

@ -725,6 +725,13 @@ unit:
command/restore/file: full
command/restore/protocol: full
# ----------------------------------------------------------------------------------------------------------------------------
- name: storage
total: 1
coverage:
command/storage/list: full
# ********************************************************************************************************************************
- name: backup

View File

@ -0,0 +1,71 @@
/***********************************************************************************************************************************
Test Storage Commands
***********************************************************************************************************************************/
#include "storage/posix/storage.h"
#include "common/harnessConfig.h"
/***********************************************************************************************************************************
Test Run
***********************************************************************************************************************************/
void
testRun(void)
{
FUNCTION_HARNESS_VOID();
// Create default storage object for testing
Storage *storageTest = storagePosixNew(
strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL);
// *****************************************************************************************************************************
if (testBegin("cmdStorageList() and storageListRender()"))
{
StringList *argList = strLstNew();
strLstAddZ(argList, "pgbackrest");
strLstAdd(argList, strNewFmt("--repo-path=%s/repo", testPath()));
strLstAddZ(argList, "ls");
harnessCfgLoad(strLstSize(argList), strLstPtr(argList));
TEST_RESULT_STR(strPtr(storageListRender()), "", "missing directory");
storagePathCreateNP(storageTest, strNew("repo"));
TEST_RESULT_STR(strPtr(storageListRender()), "", "empty directory");
storagePathCreateNP(storageTest, strNew("repo/bbb"));
storagePutNP(storageNewWriteNP(storageTest, strNew("repo/aaa")), NULL);
TEST_RESULT_STR(strPtr(storageListRender()), "aaa\nbbb\n", "list files");
StringList *argListTmp = strLstDup(argList);
strLstAddZ(argListTmp, "--filter=^aaa$");
harnessCfgLoad(strLstSize(argListTmp), strLstPtr(argListTmp));
TEST_RESULT_STR(strPtr(storageListRender()), "aaa\n", "list files with filter");
argListTmp = strLstDup(argList);
strLstAddZ(argListTmp, "--sort=desc");
harnessCfgLoad(strLstSize(argListTmp), strLstPtr(argListTmp));
TEST_RESULT_STR(strPtr(storageListRender()), "bbb\naaa\n", "list files with filter and sort");
storagePutNP(storageNewWriteNP(storageTest, strNew("repo/bbb/ccc")), NULL);
argListTmp = strLstDup(argList);
strLstAddZ(argListTmp, "bbb");
harnessCfgLoad(strLstSize(argListTmp), strLstPtr(argListTmp));
TEST_RESULT_STR(strPtr(storageListRender()), "ccc\n", "list files");
// -------------------------------------------------------------------------------------------------------------------------
// Redirect stdout to a file
int stdoutSave = dup(STDOUT_FILENO);
String *stdoutFile = strNewFmt("%s/stdout.txt", testPath());
THROW_ON_SYS_ERROR(freopen(strPtr(stdoutFile), "w", stdout) == NULL, FileWriteError, "unable to reopen stdout");
// Not in a test wrapper to avoid writing to stdout
cmdStorageList();
// Restore normal stdout
dup2(stdoutSave, STDOUT_FILENO);
TEST_RESULT_STR(strPtr(strNewBuf(storageGetNP(storageNewReadNP(storageTest, stdoutFile)))), "ccc\n", " check text");
}
FUNCTION_HARNESS_RESULT_VOID();
}