Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   von Columbo akzeptierte Syntax  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

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






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002