xref: /dflybsd-src/usr.sbin/installer/libinstaller/functions.h (revision 4d4ae2fa84d1285901e8f27b9a41889d3ae67f8d)
121c1c48aSSascha Wildner /*
221c1c48aSSascha Wildner  * Copyright (c)2004 The DragonFly Project.  All rights reserved.
321c1c48aSSascha Wildner  *
421c1c48aSSascha Wildner  * Redistribution and use in source and binary forms, with or without
521c1c48aSSascha Wildner  * modification, are permitted provided that the following conditions
621c1c48aSSascha Wildner  * are met:
721c1c48aSSascha Wildner  *
821c1c48aSSascha Wildner  *   Redistributions of source code must retain the above copyright
921c1c48aSSascha Wildner  *   notice, this list of conditions and the following disclaimer.
1021c1c48aSSascha Wildner  *
1121c1c48aSSascha Wildner  *   Redistributions in binary form must reproduce the above copyright
1221c1c48aSSascha Wildner  *   notice, this list of conditions and the following disclaimer in
1321c1c48aSSascha Wildner  *   the documentation and/or other materials provided with the
1421c1c48aSSascha Wildner  *   distribution.
1521c1c48aSSascha Wildner  *
1621c1c48aSSascha Wildner  *   Neither the name of the DragonFly Project nor the names of its
1721c1c48aSSascha Wildner  *   contributors may be used to endorse or promote products derived
1821c1c48aSSascha Wildner  *   from this software without specific prior written permission.
1921c1c48aSSascha Wildner  *
2021c1c48aSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2121c1c48aSSascha Wildner  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2221c1c48aSSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2321c1c48aSSascha Wildner  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
2421c1c48aSSascha Wildner  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
2521c1c48aSSascha Wildner  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2621c1c48aSSascha Wildner  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2721c1c48aSSascha Wildner  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2821c1c48aSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2921c1c48aSSascha Wildner  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
3021c1c48aSSascha Wildner  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
3121c1c48aSSascha Wildner  * OF THE POSSIBILITY OF SUCH DAMAGE.
3221c1c48aSSascha Wildner  */
3321c1c48aSSascha Wildner 
3421c1c48aSSascha Wildner /*
3521c1c48aSSascha Wildner  * functions.h
3621c1c48aSSascha Wildner  * $Id: functions.h,v 1.22 2005/02/06 21:05:18 cpressey Exp $
3721c1c48aSSascha Wildner  */
3821c1c48aSSascha Wildner 
3921c1c48aSSascha Wildner #ifndef __FUNCTIONS_H_
4021c1c48aSSascha Wildner #define __FUNCTIONS_H_
4121c1c48aSSascha Wildner 
4221c1c48aSSascha Wildner #include <stdio.h>
4321c1c48aSSascha Wildner 
4421c1c48aSSascha Wildner #include "libaura/dict.h"
4521c1c48aSSascha Wildner #include "libdfui/dfui.h"
4621c1c48aSSascha Wildner 
4721c1c48aSSascha Wildner #include "confed.h"
4821c1c48aSSascha Wildner 
4921c1c48aSSascha Wildner struct storage;
5021c1c48aSSascha Wildner 
5121c1c48aSSascha Wildner /*
52c4d6eff4SAntonio Huete Jimenez  * Function argument flags
53c4d6eff4SAntonio Huete Jimenez  */
54c4d6eff4SAntonio Huete Jimenez #define I_BOOTED_LIVECD		0x1
55c4d6eff4SAntonio Huete Jimenez #define I_UPGRADE_TOOGLE	0x2
56c4d6eff4SAntonio Huete Jimenez 
57c4d6eff4SAntonio Huete Jimenez /*
5821c1c48aSSascha Wildner  * Installer function arguments.
5921c1c48aSSascha Wildner  */
6021c1c48aSSascha Wildner struct i_fn_args {
6121c1c48aSSascha Wildner 	struct dfui_connection *c;	/* DFUI connection to f/e */
6221c1c48aSSascha Wildner 	struct storage *s;		/* description of system storage */
6321c1c48aSSascha Wildner 	const char *os_root;		/* where livecd files live */
6421c1c48aSSascha Wildner 	const char *cfg_root;		/* where target conf files live */
6521c1c48aSSascha Wildner 	const char *tmp;		/* directory for temporary files */
6621c1c48aSSascha Wildner 	const char *name;		/* overrides title of form */
6721c1c48aSSascha Wildner 	const char *short_desc;		/* overrides short desc */
6821c1c48aSSascha Wildner 	const char *long_desc;		/* overrides help text */
6921c1c48aSSascha Wildner 	const char *cancel_desc;	/* overrides cancel button */
7021c1c48aSSascha Wildner 	int result;			/* result of function */
7121c1c48aSSascha Wildner 	FILE *log;			/* file to log to */
7221c1c48aSSascha Wildner 	struct aura_dict *temp_files;	/* names of files to delete on exit */
7321c1c48aSSascha Wildner 	struct config_vars *cmd_names;	/* names (and paths) of commands to use */
74c4d6eff4SAntonio Huete Jimenez 	int flags;			/* Option flags */
7521c1c48aSSascha Wildner };
7621c1c48aSSascha Wildner 
7721c1c48aSSascha Wildner /*** PROTOTYPES ***/
7821c1c48aSSascha Wildner 
7921c1c48aSSascha Wildner /* Installer Context */
8021c1c48aSSascha Wildner 
81*4d4ae2faSAntonio Huete Jimenez struct i_fn_args *i_fn_args_new(const char *, const char *, const char *,
82*4d4ae2faSAntonio Huete Jimenez 				int, const char *);
8321c1c48aSSascha Wildner void		 i_fn_args_free(struct i_fn_args *);
8421c1c48aSSascha Wildner 
8559b733d3SSascha Wildner void		 i_log(struct i_fn_args *, const char *, ...)
8659b733d3SSascha Wildner 		     __printflike(2, 3);
8721c1c48aSSascha Wildner 
8821c1c48aSSascha Wildner /* General Utilities */
8921c1c48aSSascha Wildner 
9021c1c48aSSascha Wildner void		 abort_backend(void);
9121c1c48aSSascha Wildner int		 assert_clean(struct dfui_connection *, const char *, const char *, const char *);
9221c1c48aSSascha Wildner int		 hex_to_int(const char *, int *);
9321c1c48aSSascha Wildner int		 first_non_space_char_is(const char *, char);
9421c1c48aSSascha Wildner const char	*capacity_to_string(long);
9521c1c48aSSascha Wildner int		 string_to_capacity(const char *, long *);
9621c1c48aSSascha Wildner unsigned long	 next_power_of_two(unsigned long);
9721c1c48aSSascha Wildner char		*filename_noext(const char *);
9821c1c48aSSascha Wildner 
9921c1c48aSSascha Wildner /* Temp Files */
10021c1c48aSSascha Wildner 
10121c1c48aSSascha Wildner int		 temp_file_add(struct i_fn_args *, const char *);
10221c1c48aSSascha Wildner int		 temp_files_clean(struct i_fn_args *);
10321c1c48aSSascha Wildner 
10421c1c48aSSascha Wildner /* Command Names */
10521c1c48aSSascha Wildner 
10621c1c48aSSascha Wildner const char	*cmd_name(const struct i_fn_args *, const char *);
10721c1c48aSSascha Wildner 
10821c1c48aSSascha Wildner #endif /* !__FUNCTIONS_H_ */
109