Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/src/bin/pg_basebackup/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 2 kB image not shown  

Quelle  pg_backup_utils.c

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * pg_backup_utils.c
 * Utility routines shared by pg_dump and pg_restore
 *
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/bin/pg_dump/pg_backup_utils.c
 *
 *-------------------------------------------------------------------------
 */

#include "postgres_fe.h"

#ifdef WIN32
#include "parallel.h"
#endif
#include "pg_backup_utils.h"

/* Globals exported by this file */
const char *progname = NULL;

#define MAX_ON_EXIT_NICELY    20

static struct
{
 on_exit_nicely_callback function;
 void    *arg;
}   on_exit_nicely_list[MAX_ON_EXIT_NICELY];

static int on_exit_nicely_index;

/*
 * Parse a --section=foo command line argument.
 *
 * Set or update the bitmask in *dumpSections according to arg.
 * dumpSections is initialised as DUMP_UNSECTIONED by pg_dump and
 * pg_restore so they can know if this has even been called.
 */

void
set_dump_section(const char *arg, int *dumpSections)
{
 /* if this is the first call, clear all the bits */
 if (*dumpSections == DUMP_UNSECTIONED)
  *dumpSections = 0;

 if (strcmp(arg, "pre-data") == 0)
  *dumpSections |= DUMP_PRE_DATA;
 else if (strcmp(arg, "data") == 0)
  *dumpSections |= DUMP_DATA;
 else if (strcmp(arg, "post-data") == 0)
  *dumpSections |= DUMP_POST_DATA;
 else
 {
  pg_log_error("unrecognized section name: \"%s\"", arg);
  pg_log_error_hint("Try \"%s --help\" for more information.", progname);
  exit_nicely(1);
 }
}


/* Register a callback to be run when exit_nicely is invoked. */
void
on_exit_nicely(on_exit_nicely_callback function, void *arg)
{
 if (on_exit_nicely_index >= MAX_ON_EXIT_NICELY)
  pg_fatal("out of on_exit_nicely slots");
 on_exit_nicely_list[on_exit_nicely_index].function = function;
 on_exit_nicely_list[on_exit_nicely_index].arg = arg;
 on_exit_nicely_index++;
}

/*
 * Run accumulated on_exit_nicely callbacks in reverse order and then exit
 * without printing any message.
 *
 * If running in a parallel worker thread on Windows, we only exit the thread,
 * not the whole process.
 *
 * Note that in parallel operation on Windows, the callback(s) will be run
 * by each thread since the list state is necessarily shared by all threads;
 * each callback must contain logic to ensure it does only what's appropriate
 * for its thread.  On Unix, callbacks are also run by each process, but only
 * for callbacks established before we fork off the child processes.  (It'd
 * be cleaner to reset the list after fork(), and let each child establish
 * its own callbacks; but then the behavior would be completely inconsistent
 * between Windows and Unix.  For now, just be sure to establish callbacks
 * before forking to avoid inconsistency.)
 */

void
exit_nicely(int code)
{
 int   i;

 for (i = on_exit_nicely_index - 1; i >= 0; i--)
  on_exit_nicely_list[i].function(code,
          on_exit_nicely_list[i].arg);

#ifdef WIN32
 if (parallel_init_done && GetCurrentThreadId() != mainThreadId)
  _endthreadex(code);
#endif

 exit(code);
}

Messung V0.5 in Prozent
C=95 H=93 G=93

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-08-07) ¤

*© Formatika GbR, Deutschland






Versionsinformation zu Columbo

Bemerkung:

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Anfrage:

Dauer der Verarbeitung:

Sekunden

sprechenden Kalenders