LCOV - code coverage report
Current view: top level - edit - hexedit.h (source / functions) Hit Total Coverage
Test: gfs2-utils.info Lines: 0 8 0.0 %
Date: 2023-09-27 13:48:55 Functions: 0 2 0.0 %

          Line data    Source code
       1             : #ifndef __HEXVIEW_DOT_H__
       2             : #define __HEXVIEW_DOT_H__
       3             : 
       4             : #include <sys/types.h>
       5             : #include <inttypes.h>
       6             : #include <limits.h>
       7             : #include <string.h>
       8             : #include <ncurses.h>
       9             : 
      10             : #include "libgfs2.h"
      11             : #include "copyright.cf"
      12             : 
      13             : #ifndef TRUE
      14             : #define TRUE 1
      15             : #endif
      16             : #ifndef FALSE
      17             : #define FALSE 0
      18             : #endif
      19             : 
      20             : #define DMODES 3
      21             : enum dsp_mode { HEX_MODE = 0, GFS2_MODE = 1, EXTENDED_MODE = 2, INIT_MODE = 3 };
      22             : #define BLOCK_STACK_SIZE 256
      23             : 
      24             : #define RGLIST_DUMMY_BLOCK -2
      25             : #define JOURNALS_DUMMY_BLOCK -3
      26             : 
      27             : extern const char *mtypes[];
      28             : extern int blockhist;
      29             : extern int edit_mode;
      30             : extern int line;
      31             : extern char edit_fmt[80];
      32             : extern char estring[1024]; /* edit string */
      33             : extern char efield[64];
      34             : extern uint64_t dev_offset;
      35             : extern uint64_t max_block;
      36             : extern int termlines;
      37             : extern int insert;
      38             : extern const char *termtype;
      39             : extern int line;
      40             : extern int struct_len;
      41             : extern unsigned int offset;
      42             : extern int edit_row[DMODES], edit_col[DMODES], print_entry_ndx;
      43             : extern int start_row[DMODES], end_row[DMODES], lines_per_row[DMODES];
      44             : extern int edit_size[DMODES], last_entry_onscreen[DMODES];
      45             : extern char edit_fmt[80];
      46             : extern struct lgfs2_sbd sbd;
      47             : extern struct gfs2_dinode *di;
      48             : extern int screen_chunk_size; /* how much of the 4K can fit on screen */
      49             : extern int gfs2_struct_type;
      50             : extern int identify;
      51             : extern int color_scheme;
      52             : extern WINDOW *wind;
      53             : extern int editing;
      54             : extern uint64_t temp_blk;
      55             : extern uint64_t starting_blk;
      56             : extern int dsplines;
      57             : extern int dsp_lines[DMODES];
      58             : extern int combined_display;
      59             : extern int details;
      60             : extern const char *allocdesc[5];
      61             : extern char *device;
      62             : 
      63             : struct idirent {
      64             :         struct lgfs2_inum inum;
      65             :         uint32_t hash;
      66             :         uint16_t rec_len;
      67             :         uint16_t name_len;
      68             :         uint16_t type;
      69             :         uint16_t rahead;
      70             :         char filename[NAME_MAX];
      71             : };
      72             : 
      73             : extern void idirent_in(struct idirent *id, void *de);
      74             : 
      75             : struct indirect_info {
      76             :         int is_dir;
      77             :         int height;
      78             :         uint64_t block;
      79             :         uint32_t dirents;
      80             :         struct gfs2_leaf lf;
      81             :         struct lgfs2_metapath mp;
      82             :         struct idirent dirent[64];
      83             :         uint64_t ptroff;
      84             : };
      85             : 
      86             : struct iinfo {
      87             :         struct indirect_info ii[512];
      88             : };
      89             : 
      90             : struct blkstack_info {
      91             :         uint64_t block;
      92             :         int start_row[DMODES];
      93             :         int end_row[DMODES];
      94             :         int lines_per_row[DMODES];
      95             :         int edit_row[DMODES];
      96             :         int edit_col[DMODES];
      97             :         enum dsp_mode dmode;
      98             :         int gfs2_struct_type;
      99             :         struct lgfs2_metapath mp;
     100             : };
     101             : 
     102             : extern struct blkstack_info blockstack[BLOCK_STACK_SIZE];
     103             : extern struct iinfo *indirect; /* more than the most indirect
     104             :                                pointers possible for any given 4K block */
     105             : extern struct indirect_info masterdir; /* Master directory info */
     106             : extern int indirect_blocks;  /* count of indirect blocks */
     107             : extern enum dsp_mode dmode;
     108             : 
     109             : /* ------------------------------------------------------------------------ */
     110             : /* block_is_rgtree - there's no such block as the rglist.  This is a        */
     111             : /*                   special case meant to parse the rindex and follow the  */
     112             : /*                   blocks to the real rgs.                                */
     113             : /* ------------------------------------------------------------------------ */
     114           0 : static inline int block_is_rgtree(uint64_t blk)
     115             : {
     116           0 :         if (blk == RGLIST_DUMMY_BLOCK)
     117           0 :                 return TRUE;
     118           0 :         return FALSE;
     119             : }
     120             : 
     121           0 : static inline int block_is_journals(uint64_t blk)
     122             : {
     123           0 :         if (blk == JOURNALS_DUMMY_BLOCK)
     124           0 :                 return TRUE;
     125           0 :         return FALSE;
     126             : }
     127             : 
     128             : #define SCREEN_HEIGHT   (16)
     129             : #define SCREEN_WIDTH    (16)
     130             : 
     131             : #define TITLE1 "gfs2_edit - Global File System Editor (use with extreme caution)"
     132             : #define TITLE2 REDHAT_COPYRIGHT " - Press H for help"
     133             : 
     134             : #define COLOR_TITLE     1
     135             : #define COLOR_NORMAL    2
     136             : #define COLOR_INVERSE   3
     137             : #define COLOR_SPECIAL   4
     138             : #define COLOR_HIGHLIGHT 5
     139             : #define COLOR_OFFSETS   6
     140             : #define COLOR_CONTENTS  7
     141             : 
     142             : #define COLORS_TITLE     \
     143             :         do { \
     144             :                 if (termlines) { \
     145             :                         attrset(COLOR_PAIR(COLOR_TITLE)); \
     146             :                         attron(A_BOLD); \
     147             :                 } \
     148             :         } while (0)
     149             : #define COLORS_NORMAL    \
     150             :         do { \
     151             :                 if (termlines) { \
     152             :                         attrset(COLOR_PAIR(COLOR_NORMAL)); \
     153             :                         attron(A_BOLD); \
     154             :                 } \
     155             :         } while (0)
     156             : #define COLORS_INVERSE   \
     157             :         do { \
     158             :                 if (termlines) { \
     159             :                         attrset(COLOR_PAIR(COLOR_INVERSE)); \
     160             :                         attron(A_BOLD); \
     161             :                 } \
     162             :         } while (0)
     163             : #define COLORS_SPECIAL   \
     164             :         do { \
     165             :                 if (termlines) { \
     166             :                         attrset(COLOR_PAIR(COLOR_SPECIAL)); \
     167             :                         attron(A_BOLD); \
     168             :                 } \
     169             :         } while (0)
     170             : #define COLORS_HIGHLIGHT \
     171             :         do { \
     172             :                 if (termlines) { \
     173             :                         attrset(COLOR_PAIR(COLOR_HIGHLIGHT)); \
     174             :                         attron(A_BOLD); \
     175             :                 } \
     176             :         } while (0)
     177             : #define COLORS_OFFSETS   \
     178             :         do { \
     179             :                 if (termlines) { \
     180             :                         attrset(COLOR_PAIR(COLOR_OFFSETS)); \
     181             :                         attron(A_BOLD); \
     182             :                 } \
     183             :         } while (0)
     184             : #define COLORS_CONTENTS  \
     185             :         do { \
     186             :                 if (termlines) { \
     187             :                         attrset(COLOR_PAIR(COLOR_CONTENTS)); \
     188             :                         attron(A_BOLD); \
     189             :                 } \
     190             :         } while (0)
     191             : 
     192             : extern int block_is_rindex(uint64_t blk);
     193             : extern int block_is_inum_file(uint64_t blk);
     194             : extern int block_is_statfs_file(uint64_t blk);
     195             : extern int block_is_quota_file(uint64_t blk);
     196             : extern int block_is_per_node(uint64_t blk);
     197             : extern int display_block_type(char *buf, uint64_t addr, int from_restore);
     198             : extern void gfs_log_header_print(void *lhp);
     199             : extern void savemeta(char *out_fn, int saveoption, int gziplevel);
     200             : extern void restoremeta(const char *in_fn, const char *out_device,
     201             :                         uint64_t printblocksonly);
     202             : extern int display(int identify_only, int trunc_zeros, uint64_t flagref,
     203             :                    uint64_t ref_blk);
     204             : extern uint64_t check_keywords(const char *kword);
     205             : extern uint64_t masterblock(const char *fn);
     206             : extern void gfs_rgrp_print(void *rgp);
     207             : extern int has_indirect_blocks(void);
     208             : extern const struct lgfs2_metadata *get_block_type(char *buf);
     209             : 
     210             : #endif /* __HEXVIEW_DOT_H__ */

Generated by: LCOV version 1.14