Ruby: ext/zlib/zlib-1.2.13/contrib/untgz/untgz.c File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Enumerations | Functions | Variables
untgz.c File Reference
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <time.h>`
`#include <errno.h>`
`#include "zlib.h"`
`#include <direct.h>`
`#include <io.h>`
`#include <utime.h>`

Go to the source code of this file.

## Data Structures
struct | tar_header
union | tar_buffer
struct | attr_item

## Macros
#define | REGTYPE '0' /* regular file */
#define | AREGTYPE '\0' /* regular file */
#define | LNKTYPE '1' /* link */
#define | SYMTYPE '2' /* reserved */
#define | CHRTYPE '3' /* character special */
#define | BLKTYPE '4' /* block special */
#define | DIRTYPE '5' /* directory */
#define | FIFOTYPE '6' /* FIFO special */
#define | CONTTYPE '7' /* reserved */
#define | GNUTYPE_DUMPDIR 'D' /* file names from dumped directory */
#define | GNUTYPE_LONGLINK 'K' /* long link name */
#define | GNUTYPE_LONGNAME 'L' /* long file name */
#define | GNUTYPE_MULTIVOL 'M' /* continuation of file from another volume */
#define | GNUTYPE_NAMES 'N' /* file name that does not fit into main hdr */
#define | GNUTYPE_SPARSE 'S' /* sparse file */
#define | GNUTYPE_VOLHDR 'V' /* tape/volume header */
#define | BLOCKSIZE 512
#define | SHORTNAMESIZE 100
#define | ISSPECIAL(c) (((c) == '*') || ((c) == '/'))

## Enumerations
enum | { TGZ_EXTRACT , TGZ_LIST , TGZ_INVALID }

## Functions
char *TGZfname | OF ((const char *))
int getoct | OF ((char *, int))
char *strtime | OF ((time_t *))
int setfiletime | OF ((char *, time_t))
void push_attr | OF ((struct attr_item **, char *, int, time_t))
void restore_attr | OF ((struct attr_item **))
int ExprMatch | OF ((char *, char *))
int makedir | OF ((char *))
int matchname | OF ((int, int, char **, char *))
int tar | OF ((gzFile, int, int, int, char **))
void help | OF ((int))
int main | OF ((int, char **))
char * | TGZfname (const char *arcname)
void | TGZnotfound (const char *arcname)
int | getoct (char *p, int width)
char * | strtime (time_t *t)
int | setfiletime (char *fname, time_t ftime)
void | push_attr (struct attr_item **list, char *fname, int mode, time_t time)
void | restore_attr (struct attr_item **list)
int | ExprMatch (char *string, char *expr)
int | makedir (char *newdir)
int | matchname (int arg, int argc, char **argv, char *fname)
int | tar (gzFile in, int action, int arg, int argc, char **argv)
void | help (int exitval)
void | error (const char *msg)
int | main (int argc, char **argv)

## Variables
char * | prog
const char * | TGZsuffix [] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL }

## Macro Definition Documentation

## ◆ AREGTYPE

#define AREGTYPE '\0' /* regular file */

Definition at line 43 of file untgz.c.

## ◆ BLKTYPE

#define BLKTYPE '4' /* block special */

Definition at line 47 of file untgz.c.

## ◆ BLOCKSIZE

#define BLOCKSIZE 512

Definition at line 65 of file untgz.c.

## ◆ CHRTYPE

#define CHRTYPE '3' /* character special */

Definition at line 46 of file untgz.c.

## ◆ CONTTYPE

#define CONTTYPE '7' /* reserved */

Definition at line 50 of file untgz.c.

## ◆ DIRTYPE

#define DIRTYPE '5' /* directory */

Definition at line 48 of file untgz.c.

## ◆ FIFOTYPE

#define FIFOTYPE '6' /* FIFO special */

Definition at line 49 of file untgz.c.

## ◆ GNUTYPE_DUMPDIR

#define GNUTYPE_DUMPDIR 'D' /* file names from dumped directory */

Definition at line 54 of file untgz.c.

## ◆ GNUTYPE_LONGLINK

#define GNUTYPE_LONGLINK 'K' /* long link name */

Definition at line 55 of file untgz.c.

## ◆ GNUTYPE_LONGNAME

#define GNUTYPE_LONGNAME 'L' /* long file name */

Definition at line 56 of file untgz.c.

## ◆ GNUTYPE_MULTIVOL

#define GNUTYPE_MULTIVOL 'M' /* continuation of file from another volume */

Definition at line 57 of file untgz.c.

## ◆ GNUTYPE_NAMES

#define GNUTYPE_NAMES 'N' /* file name that does not fit into main hdr */

Definition at line 58 of file untgz.c.

## ◆ GNUTYPE_SPARSE

#define GNUTYPE_SPARSE 'S' /* sparse file */

Definition at line 59 of file untgz.c.

## ◆ GNUTYPE_VOLHDR

#define GNUTYPE_VOLHDR 'V' /* tape/volume header */

Definition at line 60 of file untgz.c.

## ◆ ISSPECIAL

#define ISSPECIAL | ( |  | c | ) | (((c) == '*') || ((c) == '/'))

Definition at line 288 of file untgz.c.

## ◆ LNKTYPE

#define LNKTYPE '1' /* link */

Definition at line 44 of file untgz.c.

## ◆ REGTYPE

#define REGTYPE '0' /* regular file */

Definition at line 42 of file untgz.c.

## ◆ SHORTNAMESIZE

#define SHORTNAMESIZE 100

Definition at line 66 of file untgz.c.

## ◆ SYMTYPE

#define SYMTYPE '2' /* reserved */

Definition at line 45 of file untgz.c.

## Enumeration Type Documentation

## ◆ anonymous enum

anonymous enum

Enumerator
TGZ_EXTRACT |
TGZ_LIST |
TGZ_INVALID |

Definition at line 103 of file untgz.c.

## Function Documentation

## ◆ error()

void error | ( | const char * | msg | ) |

Definition at line 593 of file untgz.c.

References prog.

Referenced by dln_load(), getaddrinfo(), gmtime_r(), localtime_r(), main(), push_attr(), rb_io_modestr_fmode(), rb_keyword_error_new(), rb_memory_view_parse_item_format(), rb_process_status_new(), rb_reg_fragment_setenc(), rsock_getaddrinfo(), rsock_inspect_sockaddr(), rsock_ipaddr(), rsock_raise_socket_error(), strerror(), tar(), win32_error_file_func(), win32_read_file_func(), win32_seek64_file_func(), win32_seek_file_func(), win32_tell64_file_func(), win32_tell_file_func(), and win32_write_file_func().

## ◆ ExprMatch()

int ExprMatch | ( | char * | string,
|  | char * | expr
| ) |  |

Definition at line 290 of file untgz.c.

References ISSPECIAL.

Referenced by matchname().

## ◆ getoct()

int getoct | ( | char * | p,
|  | int | width
| ) |  |

Definition at line 168 of file untgz.c.

Referenced by tar().

## ◆ help()

void help | ( | int | exitval | ) |

Definition at line 581 of file untgz.c.

References zlibVersion().

Referenced by main().

## ◆ main()

int main | ( | int argc | ,
|  | char ** | argv
| ) |  |

Definition at line 606 of file untgz.c.

References argc, argv, error(), f, gzopen(), help(), NULL, prog, strrchr(), tar(), TGZ_EXTRACT, TGZ_LIST, TGZfname(), and TGZnotfound().

## ◆ makedir()

int makedir | ( | char * | newdir | ) |

Definition at line 328 of file untgz.c.

References free, len, prog, strdup, and strlen().

Referenced by tar().

## ◆ matchname()

int matchname | ( | int | arg,
|  | int | argc,
|  | char ** | argv,
|  | char * | fname
| ) |  |

Definition at line 371 of file untgz.c.

References argc, argv, ExprMatch(), and attr_item::fname.

Referenced by tar().

## ◆ OF() [1/12]

int makedir OF | ( | (char *) |  | ) |

## ◆ OF() [2/12]

int ExprMatch OF | ( | (char *, char *) |  | ) |

## ◆ OF() [3/12]

int getoct OF | ( | (char *, int) |  | ) |

## ◆ OF() [4/12]

int setfiletime OF | ( | (char *, time_t) |  | ) |

## ◆ OF() [5/12]

char *TGZfname OF | ( | (const char *) |  | ) |

## ◆ OF() [6/12]

int tar OF | ( | (gzFile, int, int, int, char **) |  | ) |

## ◆ OF() [7/12]

void help OF | ( | (int) |  | ) |

## ◆ OF() [8/12]

int main OF | ( | (int, char **) |  | ) |

## ◆ OF() [9/12]

int matchname OF | ( | (int, int, char **, char *) |  | ) |

## ◆ OF() [10/12]

void restore_attr OF | ( | (struct attr_item **) |  | ) |

## ◆ OF() [11/12]

void push_attr OF | ( | (struct attr_item **, char *, int, time_t) |  | ) |

## ◆ OF() [12/12]

char *strtime OF | ( | (time_t *) |  | ) |

## ◆ push_attr()

void push_attr | ( | struct attr_item ** | list,
|  | char * | fname,
|  | int | mode,
|  | time_t | time
| ) |  |

Definition at line 253 of file untgz.c.

References error(), attr_item::fname, malloc, attr_item::mode, attr_item::next, NULL, strdup, and attr_item::time.

Referenced by tar().

## ◆ restore_attr()

void restore_attr | ( | struct attr_item ** | list | ) |

Definition at line 270 of file untgz.c.

References attr_item::fname, free, attr_item::mode, attr_item::next, NULL, setfiletime(), and attr_item::time.

Referenced by tar().

## ◆ setfiletime()

int setfiletime | ( | char * | fname,
|  | time_t | ftime
| ) |  |

Definition at line 206 of file untgz.c.

References utimbuf::actime, if(), INVALID_HANDLE_VALUE, utimbuf::modtime, and NULL.

Referenced by restore_attr().

## ◆ strtime()

char * strtime | ( | time_t * | t | ) |

Definition at line 191 of file untgz.c.

References local, and t.

Referenced by tar().

## ◆ tar()

int tar | ( | gzFile | in,
|  | int | action,
|  | int | arg,
|  | int | argc,
|  | char ** | argv
| ) |  |

Definition at line 386 of file untgz.c.

References AREGTYPE, argc, argv, BLOCKSIZE, tar_buffer::buffer, DIRTYPE, err, error(), attr_item::fname, getoct(), GNUTYPE_LONGLINK, GNUTYPE_LONGNAME, gzclose(), gzerror(), gzread(), tar_buffer::header, in(), len, makedir(), matchname(), tar_header::mode, tar_header::mtime, tar_header::name, NULL, prog, push_attr(), REGTYPE, restore_attr(), SHORTNAMESIZE, tar_header::size, strlen(), strrchr(), strtime(), TGZ_EXTRACT, TGZ_INVALID, TGZ_LIST, tar_header::typeflag, and Z_OK.

Referenced by main().

## ◆ TGZfname()

char * TGZfname | ( | const char * | arcname | ) |

Definition at line 132 of file untgz.c.

References access, F_OK, NULL, strlen(), and TGZsuffix.

Referenced by main().

## ◆ TGZnotfound()

void TGZnotfound | ( | const char * | arcname | ) |

Definition at line 152 of file untgz.c.

References prog, and TGZsuffix.

Referenced by main().

## Variable Documentation

## ◆ prog

char* prog

Definition at line 125 of file untgz.c.

Referenced by error(), main(), makedir(), rb_execarg_commandline(), rb_w32_aspawn(), rb_w32_aspawn_flags(), rb_w32_spawn(), rb_w32_uaspawn(), rb_w32_uaspawn_flags(), rb_w32_uspawn(), tar(), and TGZnotfound().

## ◆ TGZsuffix

const char* TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL }

Definition at line 127 of file untgz.c.

Referenced by TGZfname(), and TGZnotfound().