xaizek / pinfo (License: GPLv2 only) (since 2018-12-07)
Console-based info and manual pages reader, which adds interactive navigation to man pages.
<root> / src / utils.h (8c476d0ef5b1ad23a2bbb1840f54a67050bd5aa1) (3,489B) (mode 100644) [raw]
/***************************************************************************
 *  Pinfo is a ncurses based lynx style info documentation browser
 *
 *  Copyright (C) 1999  Przemek Borys <pborys@dione.ids.pl>
 *  Copyright (C) 2005  Bas Zoetekouw <bas@debian.org>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of version 2 of the GNU General Public License as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 *  USA
 ***************************************************************************/

#ifndef __UTILS_H
#define __UTILS_H

extern char *safe_user;
extern char *safe_group;

#ifndef HAVE_CURS_SET
void curs_set (int a);
#endif

#ifdef ___DONT_USE_REGEXP_SEARCH___
extern char *pinfo_re_pattern;
#endif

/* wrappers for re_comp and re_exec */
int pinfo_re_comp (char *name);
int pinfo_re_exec (char *name);

/* user defined getch, capable of handling ALT keybindings */
int pinfo_getch ();
/* free() wrapper */
void xfree (void *ptr);
/* malloc() wrapper */
void *xmalloc (size_t size);
/* realloc() wrapper */
void *xrealloc (void *ptr, size_t size);
/* initializes GNU locales */
void initlocale ();
/* checks if file name does not cause secuirity problems */
void checkfilename (char *filename);
/* closes the program, and removes temporary files */
void closeprogram ();
/* initializes curses interface */
void init_curses ();
/* an interface to gnu readline */
char *getstring (char *prompt);
/* for some reasons mvhline does not work quite properly... */
void mymvhline (int y, int x, char ch, int len);
/* this one supports color back/foreground */
void myclrtoeol ();
/* takes care of the cursor, which is turned off */
void myendwin ();
/* ? */
void handlewinch ();
/* get offset of "node" in tag_table variable */
int gettagtablepos (char *node);

/* handle localized `(y/n)' dialog box.  */
int yesno (char *prompt, int def);
/* copies the first part of string, which is without regexp */
void copy_stripped_from_regexp (char *src, char *dest);


/* Block until something's on STDIN */
void waitforgetch ();

/* is curses screen open? */
extern int curses_open;

/*
 * this functions checks whether the node header node_header 
 * corresponds to node node_name
 *
 * returns  0 if node_header does not belong to a node with name node_name
 * returns -1 if no checking was done (e.g. because node_name was NULL)
 * returns  1 if check turned out ok
 */
int
check_node_name( const char * const node_name, const char * const node_header);


/* calculate width of string, handling multibyte encodings 
 * correctly */
int
width_of_string( const char * const mbs, const int len);

/*
 * calculates the length of string between start and end, counting `\t' as
 * filling up to 8 chars. (i.e. at line 22 tab will increment the counter by 2
 * [8-(22-int(22/8)*8)] spaces)
 */
int
calculate_len(char *start, char *end);

/*
 *  * create a temporary file in a safe way, and return its name in a newly
 *   * allocated string
 *    */
char *
make_tempfile();


#endif
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/pinfo

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/pinfo

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master