Greenbone Vulnerability Manager  8.0.0~git
Macros | Functions
utils.c File Reference

Generic utilities. More...

#include "utils.h"
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

Macros

#define _XOPEN_SOURCE
 Enable extra functions. More...
 
#define _POSIX_C_SOURCE   199309L
 Needed for nanosleep.
 
#define G_LOG_DOMAIN   "md manage"
 GLib log domain.
 

Functions

int gvm_usleep (unsigned int microseconds)
 Sleep for some number of microseconds, handling interrupts. More...
 
int gvm_sleep (unsigned int seconds)
 Sleep for some number of seconds, handling interrupts. More...
 
static int parse_utc_time (const char *format, const char *text_time)
 Convert a UTC time into seconds since epoch. More...
 
int parse_otp_time (const char *text_time)
 Convert an OTP time into seconds since epoch. More...
 
int parse_feed_timestamp (const char *text_time)
 Convert a feed timestamp into seconds since epoch. More...
 
int parse_ctime (const char *text_time)
 Convert a ctime into seconds since epoch. More...
 
int days_from_now (time_t *epoch_time)
 Calculate difference between now and epoch_time in days. More...
 
static char * iso_time_internal (time_t *epoch_time, const char **abbrev)
 Create an ISO time from seconds since epoch. More...
 
char * iso_time (time_t *epoch_time)
 Create an ISO time from seconds since epoch. More...
 
char * iso_time_tz (time_t *epoch_time, const char *zone, const char **abbrev)
 Create an ISO time from seconds since epoch, given a timezone. More...
 
static int lock_internal (lockfile_t *lockfile, const gchar *lockfile_basename, int operation)
 Lock a file. More...
 
int lockfile_lock (lockfile_t *lockfile, const gchar *lockfile_basename)
 Lock a file exclusively. More...
 
int lockfile_lock_nb (lockfile_t *lockfile, const gchar *lockfile_basename)
 Lock a file exclusively, without blocking. More...
 
int lockfile_lock_shared_nb (lockfile_t *lockfile, const gchar *lockfile_basename)
 Lock a file with a shared lock. More...
 
int lockfile_unlock (lockfile_t *lockfile)
 Unlock a file. More...
 
int lockfile_locked (const gchar *lockfile_basename)
 Check if a file is locked. More...
 

Detailed Description

Generic utilities.

Generic helper utilities. None of these are GVM specific. They could be used anywhere.

Macro Definition Documentation

◆ _XOPEN_SOURCE

#define _XOPEN_SOURCE

Enable extra functions.

time.h in glibc2 needs this for strptime.

Function Documentation

◆ days_from_now()

int days_from_now ( time_t *  epoch_time)

Calculate difference between now and epoch_time in days.

Parameters
[in]epoch_timeTime in seconds from epoch.
Returns
Int days bettween now and epoch_time or -1 if epoch_time is in the past

◆ gvm_sleep()

int gvm_sleep ( unsigned int  seconds)

Sleep for some number of seconds, handling interrupts.

Parameters
[in]secondsNumber of seconds.
Returns
0 success, -1 error (with errno set).

◆ gvm_usleep()

int gvm_usleep ( unsigned int  microseconds)

Sleep for some number of microseconds, handling interrupts.

Parameters
[in]microsecondsNumber of microseconds.
Returns
0 success, -1 error (with errno set).

◆ iso_time()

char* iso_time ( time_t *  epoch_time)

Create an ISO time from seconds since epoch.

Parameters
[in]epoch_timeTime in seconds from epoch.
Returns
Pointer to ISO time in static memory, or NULL on error.

◆ iso_time_internal()

static char* iso_time_internal ( time_t *  epoch_time,
const char **  abbrev 
)
static

Create an ISO time from seconds since epoch.

Parameters
[in]epoch_timeTime in seconds from epoch.
[out]abbrevAbbreviation for current timezone.
Returns
Pointer to ISO time in static memory, or NULL on error.

◆ iso_time_tz()

char* iso_time_tz ( time_t *  epoch_time,
const char *  zone,
const char **  abbrev 
)

Create an ISO time from seconds since epoch, given a timezone.

Parameters
[in]epoch_timeTime in seconds from epoch.
[in]zoneTimezone.
[out]abbrevTimezone abbreviation.
Returns
Pointer to ISO time in static memory, or NULL on error.

◆ lock_internal()

static int lock_internal ( lockfile_t lockfile,
const gchar *  lockfile_basename,
int  operation 
)
static

Lock a file.

Parameters
[in]lockfileLockfile.
[in]lockfile_basenameBasename of lock file.
[in]operationLOCK_EX (exclusive) or LOCK_SH (shared). Maybe ORd with LOCK_NB to prevent blocking.
Returns
0 success, 1 already locked, -1 error

◆ lockfile_lock()

int lockfile_lock ( lockfile_t lockfile,
const gchar *  lockfile_basename 
)

Lock a file exclusively.

Block until file is locked.

Parameters
[in]lockfileLockfile.
[in]lockfile_basenameBasename of lock file.
Returns
0 success, 1 already locked, -1 error

◆ lockfile_lock_nb()

int lockfile_lock_nb ( lockfile_t lockfile,
const gchar *  lockfile_basename 
)

Lock a file exclusively, without blocking.

Parameters
[in]lockfileLockfile.
[in]lockfile_basenameBasename of lock file.
Returns
0 success, 1 already locked, -1 error

◆ lockfile_lock_shared_nb()

int lockfile_lock_shared_nb ( lockfile_t lockfile,
const gchar *  lockfile_basename 
)

Lock a file with a shared lock.

Parameters
[in]lockfileLockfile.
[in]lockfile_basenameBasename of lock file.
Returns
0 success, 1 already locked, -1 error

◆ lockfile_locked()

int lockfile_locked ( const gchar *  lockfile_basename)

Check if a file is locked.

Parameters
[in]lockfile_basenameBasename of lock file.
Returns
0 free, 1 locked, -1 error

◆ lockfile_unlock()

int lockfile_unlock ( lockfile_t lockfile)

Unlock a file.

Parameters
[in]lockfileLockfile.
Returns
0 success, -1 error

◆ parse_ctime()

int parse_ctime ( const char *  text_time)

Convert a ctime into seconds since epoch.

Use the current timezone.

Parameters
[in]text_timeTime as text in ctime format.
Returns
Time since epoch.

◆ parse_feed_timestamp()

int parse_feed_timestamp ( const char *  text_time)

Convert a feed timestamp into seconds since epoch.

Parameters
[in]text_timeTime as text in ctime format.
Returns
Time since epoch. 0 on error.

◆ parse_otp_time()

int parse_otp_time ( const char *  text_time)

Convert an OTP time into seconds since epoch.

Use UTC as timezone.

Parameters
[in]text_timeTime as text in ctime format.
Returns
Time since epoch. 0 on error.

◆ parse_utc_time()

static int parse_utc_time ( const char *  format,
const char *  text_time 
)
static

Convert a UTC time into seconds since epoch.

Parameters
[in]formatFormat of time.
[in]text_timeTime as text.
Returns
Time since epoch. 0 on error.