/* * Guillaume Cottenceau (gc@mandrakesoft.com) * * Copyright 2000 MandrakeSoft * * This software may be freely redistributed under the terms of the GNU * public license. * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. * */ /* * Portions from Erik Troan (ewt@redhat.com) * * Copyright 1996 Red Hat Software * */ #ifndef _TOOLS_H_ #define _TOOLS_H_ #include void process_cmdline(void); int get_param(int i); void set_param(int i); void unset_param(int i); int charstar_to_int(char * s); /* Returns total memory in Kb */ unsigned long total_memory(void); unsigned long get_ramdisk_size(const char *ramdisk_path); int ramdisk_possible(unsigned long ramdisk_size); char * get_ramdisk_realname(void); enum return_type load_ramdisk(char *, unsigned long size); enum return_type load_ramdisk_fd(int ramdisk_fd, unsigned long size); enum return_type load_ramdisk_or_iso(int ramdisk_fd, unsigned long size, int is_iso); void * memdup(void *src, size_t size); void add_to_env(char * name, char * value); void handle_env(char ** env); char ** grab_env(void); int pass_env(int); char ** list_directory(char * direct); int string_array_length(char ** a); int do_losetup(char * device, char * target); /** * Setup a loopback device backed by fd. * * @param device path to loopback device * @param fd backing file descriptor * @param name for pretty output from losetup, typically name of the backing file. * @return 0 on success, otherwise -1 * * @note: should be used instead of do_losetup for anonymous files, * i.e. ones created by memfd_create, open(O_TMPFILE), etc */ int do_losetup_fd(char *device, int fd, const char *name); char * get_ramdisk_path(const char *); char * get_uid_file_path(const char *, const char *); enum return_type verify_ramdisk_digest(const char *filename, const char *sha256_hash); int splash_verbose(); int update_splash(char * state); int prepare_progress(void); void close_progress(void); char * get_param_valued(char *param_name); char * get_from_env(const char * key, const char * const * env); struct param_elem { char * name; char * value; }; #define ptr_begins_static_str(pointer,static_str) (!strncmp(pointer,static_str,sizeof(static_str)-1)) #define streq !strcmp #define MKDEV(ma,mi) ((ma)<<8 | (mi)) #define BYTES2MB(b) ((unsigned int)((b)/1024/1024)) #endif