rpm  5.2.1
Defines | Enumerations | Functions | Variables
rpmio/rpmrpc.c File Reference
#include "system.h"
#include <rpmio_internal.h>
#include <rpmmacro.h>
#include <rpmdav.h>
#include <rpmhash.h>
#include <ugid.h>
#include "debug.h"
Include dependency graph for rpmrpc.c:

Go to the source code of this file.

Defines

#define _RPMAV_INTERNAL
#define _RPMDAV_INTERNAL
#define g_strdup   xstrdup
#define g_free   free
#define MAXCOLS   30
#define alloca_strdup(_s)   strcpy(alloca(strlen(_s)+1), (_s))

Enumerations

enum  ftpSysCall_t {
  DO_FTP_STAT = 1, DO_FTP_LSTAT = 2, DO_FTP_READLINK = 3, DO_FTP_ACCESS = 4,
  DO_FTP_GLOB = 5
}

Functions

static int ftpMkdir (const char *path, mode_t mode)
static int ftpChdir (const char *path)
static int ftpRmdir (const char *path)
static int ftpRename (const char *oldpath, const char *newpath)
static int ftpUnlink (const char *path)
int Mkdir (const char *path, mode_t mode)
 mkdir(2) clone.
int Chdir (const char *path)
 chdir(2) clone.
int Rmdir (const char *path)
 rmdir(2) clone.
int Chroot (const char *path)
 chroot(2) clone.
int Open (const char *path, int flags, mode_t mode)
 open(2) clone.
int Rename (const char *oldpath, const char *newpath)
 rename(2) clone.
int Link (const char *oldpath, const char *newpath)
 link(2) clone.
int Unlink (const char *path)
 unlink(2) clone.
static int vfs_split_text (char *p)
static int is_num (int idx)
static int is_dos_date (const char *str)
static int is_week (const char *str, struct tm *tim)
static int is_month (const char *str, struct tm *tim)
static int is_time (const char *str, struct tm *tim)
static int is_year (const char *str, struct tm *tim)
static int vfs_parse_filetype (char c)
static int vfs_parse_filemode (const char *p)
static int vfs_parse_filedate (int idx, time_t *t)
static int vfs_parse_ls_lga (char *p, struct stat *st, const char **filename, const char **linkname)
static int ftpNLST (const char *url, ftpSysCall_t ftpSysCall, struct stat *st, char *rlbuf, size_t rlbufsiz)
static const char * statstr (const struct stat *st, char *buf)
static int ftpStat (const char *path, struct stat *st)
static int ftpLstat (const char *path, struct stat *st)
static int ftpReadlink (const char *path, char *buf, size_t bufsiz)
static DIR * ftpOpendir (const char *path)
static char * ftpRealpath (const char *path, char *resolved_path)
int Stat (const char *path, struct stat *st)
 stat(2) clone.
int Lstat (const char *path, struct stat *st)
 lstat(2) clone.
int Fstat (FD_t fd, struct stat *st)
 fstat(2) clone.
int Chown (const char *path, uid_t owner, gid_t group)
 chown(2) clone.
int Fchown (FD_t fd, uid_t owner, gid_t group)
 fchown(2) clone.
int Lchown (const char *path, uid_t owner, gid_t group)
 lchown(2) clone.
int Chmod (const char *path, mode_t mode)
 chmod(2) clone.
int Fchmod (FD_t fd, mode_t mode)
 fchmod(2) clone.
int Mkfifo (const char *path, mode_t mode)
 mkfifo(3) clone.
int Mknod (const char *path, mode_t mode, dev_t dev)
 mknod(3) clone.
int Utime (const char *path, const struct utimbuf *buf)
int Utimes (const char *path, const struct timeval times[2])
int Symlink (const char *oldpath, const char *newpath)
 symlink(3) clone.
int Readlink (const char *path, char *buf, size_t bufsiz)
 readlink(2) clone.
int Access (const char *path, int amode)
 access(2) clone.
int Glob_pattern_p (const char *pattern, int quote)
 glob_pattern_p(3) clone.
int Glob_error (const char *epath, int eerrno)
 glob_error(3) clone.
int Glob (const char *pattern, int flags, int errfunc(const char *epath, int eerrno), void *_pglob)
 glob(3) clone.
void Globfree (void *_pglob)
 globfree(3) clone.
DIR * Opendir (const char *path)
 opendir(3) clone.
struct direntReaddir (DIR *dir)
 readdir(3) clone.
int Closedir (DIR *dir)
 closedir(3) clone.
char * Realpath (const char *path, char *resolved_path)
 realpath(3) clone.
off_t Lseek (int fdno, off_t offset, int whence)
 lseek(2) clone.

Variables

const char * _chroot_prefix = NULL
static int current_mday
static int current_mon
static int current_year
static char * columns [30]
static int column_ptr [30]
static size_t ftpBufAlloced
static char * ftpBuf

Detailed Description

Definition in file rpmrpc.c.


Define Documentation

#define _RPMAV_INTERNAL

Definition at line 10 of file rpmrpc.c.

Definition at line 11 of file rpmrpc.c.

#define alloca_strdup (   _s)    strcpy(alloca(strlen(_s)+1), (_s))

Definition at line 952 of file rpmrpc.c.

Referenced by ftpNLST().

#define g_free   free

Definition at line 400 of file rpmrpc.c.

Referenced by vfs_parse_ls_lga().

#define g_strdup   xstrdup

Definition at line 399 of file rpmrpc.c.

Referenced by vfs_parse_ls_lga().

#define MAXCOLS   30

Definition at line 413 of file rpmrpc.c.

Referenced by vfs_split_text().


Enumeration Type Documentation

Enumerator:
DO_FTP_STAT 
DO_FTP_LSTAT 
DO_FTP_READLINK 
DO_FTP_ACCESS 
DO_FTP_GLOB 

Definition at line 935 of file rpmrpc.c.


Function Documentation

int Access ( const char *  path,
int  amode 
)

access(2) clone.

Todo:
Implement remotely.

Definition at line 1755 of file rpmrpc.c.

References _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by createDir(), main(), repoTestSetupDirs(), rpmdbRebuild(), and rpmioAccess().

int Chdir ( const char *  path)
int Chmod ( const char *  path,
mode_t  mode 
)

chmod(2) clone.

Todo:
Implement remotely.

Definition at line 1526 of file rpmrpc.c.

References _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by compare(), iosmStage(), mtreeMiss(), rpmdbMoveDatabase(), and sql_open().

int Chown ( const char *  path,
uid_t  owner,
gid_t  group 
)

chown(2) clone.

Todo:
Implement remotely.

Definition at line 1447 of file rpmrpc.c.

References _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by compare(), createDir(), iosmStage(), mtreeMiss(), rpmdbMoveDatabase(), and rpmioMkpath().

int Chroot ( const char *  path)
int Closedir ( DIR *  dir)

closedir(3) clone.

Definition at line 1930 of file rpmrpc.c.

References _rpmio_debug, and avClosedir().

Referenced by Fts_open(), Glob(), and repoDoFinalMove().

int Fchmod ( FD_t  fd,
mode_t  mode 
)

fchmod(2) clone.

Todo:
Implement remotely.

Definition at line 1552 of file rpmrpc.c.

References _rpmio_debug, errno, fdGetOPath(), Fileno(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

int Fchown ( FD_t  fd,
uid_t  owner,
gid_t  group 
)

fchown(2) clone.

Todo:
Implement remotely.

Definition at line 1473 of file rpmrpc.c.

References _rpmio_debug, errno, fdGetOPath(), Fileno(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

int Fstat ( FD_t  fd,
struct stat *  st 
)
static int ftpChdir ( const char *  path) [static]

Definition at line 40 of file rpmrpc.c.

References ftpCmd().

Referenced by Chdir(), and ftpNLST().

static int ftpLstat ( const char *  path,
struct stat *  st 
) [static]

Definition at line 1190 of file rpmrpc.c.

References _ftp_debug, DO_FTP_LSTAT, ftpNLST(), hashFunctionString(), and statstr().

Referenced by Lstat().

static int ftpMkdir ( const char *  path,
mode_t  mode 
) [static]

Definition at line 24 of file rpmrpc.c.

References ftpCmd().

Referenced by Mkdir().

static int ftpNLST ( const char *  url,
ftpSysCall_t  ftpSysCall,
struct stat *  st,
char *  rlbuf,
size_t  rlbufsiz 
) [static]
static DIR* ftpOpendir ( const char *  path) [static]
static int ftpReadlink ( const char *  path,
char *  buf,
size_t  bufsiz 
) [static]

Definition at line 1208 of file rpmrpc.c.

References _ftp_debug, DO_FTP_READLINK, and ftpNLST().

Referenced by Readlink().

static char* ftpRealpath ( const char *  path,
char *  resolved_path 
) [static]

Definition at line 1321 of file rpmrpc.c.

References xstrdup().

Referenced by Realpath().

static int ftpRename ( const char *  oldpath,
const char *  newpath 
) [static]

Definition at line 54 of file rpmrpc.c.

References ftpCmd().

Referenced by Rename().

static int ftpRmdir ( const char *  path) [static]

Definition at line 47 of file rpmrpc.c.

References ftpCmd().

Referenced by Rmdir().

static int ftpStat ( const char *  path,
struct stat *  st 
) [static]

Definition at line 1171 of file rpmrpc.c.

References _ftp_debug, DO_FTP_STAT, ftpNLST(), hashFunctionString(), and statstr().

Referenced by Stat().

static int ftpUnlink ( const char *  path) [static]

Definition at line 64 of file rpmrpc.c.

References ftpCmd().

Referenced by Unlink().

int Glob ( const char *  pattern,
int  flags,
int   errfuncconst char *epath, int eerrno,
void *  _pglob 
)
int Glob_error ( const char *  epath,
int  eerrno 
)

glob_error(3) clone.

Definition at line 1826 of file rpmrpc.c.

Referenced by rpmGlob().

int Glob_pattern_p ( const char *  pattern,
int  quote 
)

glob_pattern_p(3) clone.

Definition at line 1786 of file rpmrpc.c.

References URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, and urlPath().

Referenced by handleOneTrigger(), initGlobs(), processBinaryFile(), rpmdbTriggerGlobs(), rpmGlob(), and runImmedTriggers().

void Globfree ( void *  _pglob)

globfree(3) clone.

Definition at line 1876 of file rpmrpc.c.

References _rpmio_debug, and globfree().

Referenced by rpmGlob().

static int is_dos_date ( const char *  str) [static]

Definition at line 452 of file rpmrpc.c.

Referenced by vfs_parse_filedate(), and vfs_parse_ls_lga().

static int is_month ( const char *  str,
struct tm *  tim 
) [static]

Definition at line 479 of file rpmrpc.c.

Referenced by vfs_parse_filedate(), and vfs_parse_ls_lga().

static int is_num ( int  idx) [static]

Definition at line 443 of file rpmrpc.c.

References columns.

Referenced by vfs_parse_filedate(), and vfs_parse_ls_lga().

static int is_time ( const char *  str,
struct tm *  tim 
) [static]

Definition at line 496 of file rpmrpc.c.

Referenced by vfs_parse_filedate().

static int is_week ( const char *  str,
struct tm *  tim 
) [static]

Definition at line 462 of file rpmrpc.c.

Referenced by vfs_parse_filedate(), and vfs_parse_ls_lga().

static int is_year ( const char *  str,
struct tm *  tim 
) [static]

Definition at line 515 of file rpmrpc.c.

Referenced by vfs_parse_filedate().

int Lchown ( const char *  path,
uid_t  owner,
gid_t  group 
)

lchown(2) clone.

Todo:
Implement remotely.

Definition at line 1500 of file rpmrpc.c.

References _rpmio_debug, errno, lchown, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by iosmStage().

int Link ( const char *  oldpath,
const char *  newpath 
)

link(2) clone.

Definition at line 317 of file rpmrpc.c.

References _rpmio_debug, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), and xstrncasecmp().

Referenced by iosmStage().

off_t Lseek ( int  fdno,
off_t  offset,
int  whence 
)

lseek(2) clone.

Todo:
Implement SEEK_HOLE/SEEK_DATA.

Definition at line 2027 of file rpmrpc.c.

References _rpmio_debug.

int Lstat ( const char *  path,
struct stat *  st 
)
int Mkdir ( const char *  path,
mode_t  mode 
)
int Mkfifo ( const char *  path,
mode_t  mode 
)

mkfifo(3) clone.

Todo:
Implement remotely.

Definition at line 1579 of file rpmrpc.c.

References _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by iosmStage().

int Mknod ( const char *  path,
mode_t  mode,
dev_t  dev 
)

mknod(3) clone.

Todo:
Implement remotely.

Definition at line 1605 of file rpmrpc.c.

References _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by iosmStage().

int Open ( const char *  path,
int  flags,
mode_t  mode 
)

open(2) clone.

Todo:
Implement remotely.

Definition at line 210 of file rpmrpc.c.

References _chroot_prefix, _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by db_init().

DIR* Opendir ( const char *  path)
struct dirent* Readdir ( DIR *  dir) [read]

readdir(3) clone.

Definition at line 1919 of file rpmrpc.c.

References _rpmio_debug, and avReaddir().

Referenced by Fts_open(), Glob(), and repoDoFinalMove().

int Readlink ( const char *  path,
char *  buf,
size_t  bufsiz 
)
char* Realpath ( const char *  path,
char *  resolved_path 
)
int Rename ( const char *  oldpath,
const char *  newpath 
)
int Rmdir ( const char *  path)
int Stat ( const char *  path,
struct stat *  st 
)
static const char* statstr ( const struct stat *  st,
char *  buf 
) [static]

Definition at line 1145 of file rpmrpc.c.

Referenced by ftpLstat(), and ftpStat().

int Symlink ( const char *  oldpath,
const char *  newpath 
)

symlink(3) clone.

Todo:
Implement remotely.

Definition at line 1687 of file rpmrpc.c.

References _rpmio_debug, errno, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by iosmStage(), and mtreeMiss().

int Unlink ( const char *  path)
int Utime ( const char *  path,
const struct utimbuf *  buf 
)
int Utimes ( const char *  path,
const struct timeval  times[2] 
)
static int vfs_parse_filedate ( int  idx,
time_t *  t 
) [static]
static int vfs_parse_filemode ( const char *  p) [static]

Definition at line 566 of file rpmrpc.c.

Referenced by vfs_parse_ls_lga().

static int vfs_parse_filetype ( char  c) [static]

Definition at line 547 of file rpmrpc.c.

References S_IFSOCK.

Referenced by vfs_parse_ls_lga().

static int vfs_parse_ls_lga ( char *  p,
struct stat *  st,
const char **  filename,
const char **  linkname 
) [static]
static int vfs_split_text ( char *  p) [static]

Definition at line 421 of file rpmrpc.c.

References column_ptr, columns, and MAXCOLS.

Referenced by vfs_parse_ls_lga().


Variable Documentation

const char* _chroot_prefix = NULL

Definition at line 170 of file rpmrpc.c.

Referenced by Chroot(), and Open().

int column_ptr[30] [static]

Definition at line 418 of file rpmrpc.c.

Referenced by vfs_parse_ls_lga(), and vfs_split_text().

char* columns[30] [static]

Definition at line 416 of file rpmrpc.c.

Referenced by is_num(), vfs_parse_filedate(), vfs_parse_ls_lga(), and vfs_split_text().

int current_mday [static]

Definition at line 406 of file rpmrpc.c.

Referenced by vfs_parse_filedate().

int current_mon [static]

Definition at line 408 of file rpmrpc.c.

Referenced by vfs_parse_filedate().

int current_year [static]

Definition at line 410 of file rpmrpc.c.

Referenced by vfs_parse_filedate().

char* ftpBuf [static]

Definition at line 950 of file rpmrpc.c.

Referenced by ftpNLST(), and ftpOpendir().

size_t ftpBufAlloced [static]

Definition at line 945 of file rpmrpc.c.

Referenced by ftpNLST().