URI: 
       tutil.h - ltk - Socket-based GUI for X11 (WIP)
  HTML git clone git://lumidify.org/ltk.git (fast, but not encrypted)
  HTML git clone https://lumidify.org/git/ltk.git (encrypted, but very slow)
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tutil.h (2299B)
       ---
            1 /*
            2  * Copyright (c) 2021, 2023 lumidify <nobody@lumidify.org>
            3  *
            4  * Permission to use, copy, modify, and/or distribute this software for any
            5  * purpose with or without fee is hereby granted, provided that the above
            6  * copyright notice and this permission notice appear in all copies.
            7  *
            8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
            9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
           10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
           11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
           12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
           13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
           14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
           15  */
           16 
           17 #ifndef _LTK_UTIL_H_
           18 #define _LTK_UTIL_H_
           19 
           20 #include <stdarg.h>
           21 #include <stddef.h>
           22 
           23 long long ltk_strtonum(
           24     const char *numstr, long long minval,
           25     long long maxval, const char **errstrp
           26 );
           27 
           28 char *ltk_read_file(const char *filename, size_t *len_ret, char **errstr_ret);
           29 int ltk_write_file(const char *path, const char *data, size_t len, char **errstr_ret);
           30 int ltk_parse_run_cmd(const char *cmdtext, size_t len, const char *filename);
           31 void ltk_grow_string(char **str, int *alloc_size, int needed);
           32 char *ltk_setup_directory(void);
           33 char *ltk_strcat_useful(const char *str1, const char *str2);
           34 
           35 /* Note: these are actually implemented in ltkd.c and ltkc.c (they are just
           36    declared here so they can be used by the utility functions */
           37 void ltk_log_msg(const char *mode, const char *format, va_list args);
           38 void ltk_cleanup(void);
           39 
           40 void ltk_fatal_errno(const char *format, ...);
           41 void ltk_warn_errno(const char *format, ...);
           42 void ltk_fatal(const char *format, ...);
           43 void ltk_warn(const char *format, ...);
           44 
           45 /*
           46  * Compare the nul-terminated string 'terminated' with the char
           47  * array 'array' with length 'len'.
           48  * Returns non-zero if they are equal, 0 otherwise.
           49  */
           50 /* Note: this doesn't work if array contains '\0'. */
           51 int str_array_equal(const char *terminated, const char *array, size_t len);
           52 
           53 size_t prev_utf8(char *text, size_t index);
           54 size_t next_utf8(char *text, size_t len, size_t index);
           55 
           56 int set_nonblock(int fd);
           57 
           58 #define LENGTH(X) (sizeof(X) / sizeof(X[0]))
           59 
           60 #endif /* _LTK_UTIL_H_ */