"Fossies" - the Fresh Open Source Software Archive

Member "dosfstools-4.2/src/common.h" (31 Jan 2021, 3488 Bytes) of package /linux/misc/dosfstools-4.2.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "common.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 4.1_vs_4.2.

    1 /* common.h - Common functions
    2 
    3    Copyright (C) 1993 Werner Almesberger <werner.almesberger@lrc.di.epfl.ch>
    4    Copyright (C) 2008-2014 Daniel Baumann <mail@daniel-baumann.ch>
    5 
    6    This program is free software: you can redistribute it and/or modify
    7    it under the terms of the GNU General Public License as published by
    8    the Free Software Foundation, either version 3 of the License, or
    9    (at your option) any later version.
   10 
   11    This program is distributed in the hope that it will be useful,
   12    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   14    GNU General Public License for more details.
   15 
   16    You should have received a copy of the GNU General Public License
   17    along with this program. If not, see <http://www.gnu.org/licenses/>.
   18 
   19    The complete text of the GNU General Public License
   20    can be found in /usr/share/common-licenses/GPL-3 file.
   21 */
   22 
   23 #ifndef _COMMON_H
   24 #define _COMMON_H
   25 
   26 #include <sys/types.h>
   27 
   28 #include <limits.h>
   29 #include <stdint.h>
   30 
   31 #ifndef OFF_MAX
   32     #define OFF_MAX (off_t)((1ULL << (sizeof(off_t) * CHAR_BIT - 1)) - 1)
   33 #endif
   34 
   35 extern int interactive;
   36 extern int write_immed;
   37 extern int atari_format;    /* Use Atari variation of MS-DOS FS format */
   38 
   39 /* program_name used for printing messages; no name will be printed when it is
   40  * left as NULL */
   41 extern const char *program_name;
   42 
   43 void die(const char *msg, ...)
   44     __attribute((noreturn, format(printf, 1, 2)));
   45 
   46 /* Displays a prinf-style message and terminates the program. */
   47 
   48 void pdie(const char *msg, ...)
   49     __attribute((noreturn, format(printf, 1, 2)));
   50 
   51 /* Like die, but appends an error message according to the state of errno. */
   52 
   53 void *alloc(int size);
   54 
   55 /* mallocs SIZE bytes and returns a pointer to the data. Terminates the program
   56    if malloc fails. */
   57 
   58 void *qalloc(void **root, int size);
   59 
   60 /* Like alloc, but registers the data area in a list described by ROOT. */
   61 
   62 void qfree(void **root);
   63 
   64 /* Deallocates all qalloc'ed data areas described by ROOT. */
   65 
   66 int min(int a, int b);
   67 
   68 /* Returns the smaller integer value of a and b. */
   69 
   70 int xasprintf(char **strp, const char *fmt, ...)
   71     __attribute((format(printf, 2, 3)));
   72 
   73 /* Runs asprintf() and terminates the program if it fails. */
   74 
   75 int get_choice(int noninteractive_result, const char *noninteractive_msg,
   76            int choices, ...);
   77 
   78 /*
   79  * Display a numbered list of choices and accept user input to select one. If
   80  * interactive is false, it will instead print noninteractive_msg and return
   81  * noninteractive_result. The number of options must be given in choices and
   82  * must be more than one and less then ten.
   83  *
   84  * The variable arguments are choices times <int val, const char *desc>, where
   85  * val is the value that is returned when the user selects this option and desc
   86  * is the string describing this option.
   87  */
   88 
   89 char *get_line(const char *prompt, char *dest, size_t length);
   90 
   91 /*
   92  * Display prompt and read a line, placing it in dest with at most length-1
   93  * characters plus a null byte. This behaves like printing a prompt and fgets()
   94  * afterwards with the addition of temporarily enabling canonical input mode
   95  * with echo if needed.
   96  */
   97 
   98 void check_atari(void);
   99 
  100 /*
  101  * ++roman: On m68k Linux, check if this is an Atari; if yes, turn on Atari
  102  * variant of MS-DOS filesystem by default.
  103  */
  104 
  105 uint32_t generate_volume_id(void);
  106 
  107 /*
  108  * Generate a 32 bit volume ID
  109  */
  110 
  111 int validate_volume_label(char *doslabel);
  112 
  113 /*
  114  * Validate volume label
  115  */
  116 
  117 #endif