xref: /dflybsd-src/usr.sbin/installer/libinstaller/uiutil.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino /*
286d7f5d3SJohn Marino  * Copyright (c)2004 The DragonFly Project.  All rights reserved.
386d7f5d3SJohn Marino  *
486d7f5d3SJohn Marino  * Redistribution and use in source and binary forms, with or without
586d7f5d3SJohn Marino  * modification, are permitted provided that the following conditions
686d7f5d3SJohn Marino  * are met:
786d7f5d3SJohn Marino  *
886d7f5d3SJohn Marino  *   Redistributions of source code must retain the above copyright
986d7f5d3SJohn Marino  *   notice, this list of conditions and the following disclaimer.
1086d7f5d3SJohn Marino  *
1186d7f5d3SJohn Marino  *   Redistributions in binary form must reproduce the above copyright
1286d7f5d3SJohn Marino  *   notice, this list of conditions and the following disclaimer in
1386d7f5d3SJohn Marino  *   the documentation and/or other materials provided with the
1486d7f5d3SJohn Marino  *   distribution.
1586d7f5d3SJohn Marino  *
1686d7f5d3SJohn Marino  *   Neither the name of the DragonFly Project nor the names of its
1786d7f5d3SJohn Marino  *   contributors may be used to endorse or promote products derived
1886d7f5d3SJohn Marino  *   from this software without specific prior written permission.
1986d7f5d3SJohn Marino  *
2086d7f5d3SJohn Marino  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2186d7f5d3SJohn Marino  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2286d7f5d3SJohn Marino  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2386d7f5d3SJohn Marino  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
2486d7f5d3SJohn Marino  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
2586d7f5d3SJohn Marino  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2686d7f5d3SJohn Marino  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2786d7f5d3SJohn Marino  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2886d7f5d3SJohn Marino  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2986d7f5d3SJohn Marino  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
3086d7f5d3SJohn Marino  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
3186d7f5d3SJohn Marino  * OF THE POSSIBILITY OF SUCH DAMAGE.
3286d7f5d3SJohn Marino  */
3386d7f5d3SJohn Marino 
3486d7f5d3SJohn Marino /*
3586d7f5d3SJohn Marino  * uiutil.c
3686d7f5d3SJohn Marino  * $Id: uiutil.c,v 1.9 2005/03/04 21:26:20 cpressey Exp $
3786d7f5d3SJohn Marino  */
3886d7f5d3SJohn Marino 
3986d7f5d3SJohn Marino #include <stdarg.h>
4086d7f5d3SJohn Marino #include <stdio.h>
4186d7f5d3SJohn Marino #include <stdlib.h>
4286d7f5d3SJohn Marino #include <string.h>
4386d7f5d3SJohn Marino 
4486d7f5d3SJohn Marino #include "libdfui/dfui.h"
4586d7f5d3SJohn Marino 
4686d7f5d3SJohn Marino #include "functions.h"
4786d7f5d3SJohn Marino #include "uiutil.h"
4886d7f5d3SJohn Marino 
4986d7f5d3SJohn Marino void
inform(struct dfui_connection * c,const char * fmt,...)5086d7f5d3SJohn Marino inform(struct dfui_connection *c, const char *fmt, ...)
5186d7f5d3SJohn Marino {
5286d7f5d3SJohn Marino 	struct dfui_form *f;
5386d7f5d3SJohn Marino 	struct dfui_response *r;
5486d7f5d3SJohn Marino 	va_list args;
5586d7f5d3SJohn Marino 	char *message;
5686d7f5d3SJohn Marino 
5786d7f5d3SJohn Marino 	va_start(args, fmt);
5886d7f5d3SJohn Marino 	vasprintf(&message, fmt, args);
5986d7f5d3SJohn Marino 	va_end(args);
6086d7f5d3SJohn Marino 
6186d7f5d3SJohn Marino 	f = dfui_form_create(
6286d7f5d3SJohn Marino 	    "inform",
6386d7f5d3SJohn Marino 	    "Information",
6486d7f5d3SJohn Marino 	    message,
6586d7f5d3SJohn Marino 	    "",
6686d7f5d3SJohn Marino 
6786d7f5d3SJohn Marino 	    "p", "role", "informative",
6886d7f5d3SJohn Marino 
6986d7f5d3SJohn Marino 	    "a", "ok", "OK", "", "",
7086d7f5d3SJohn Marino 	    NULL
7186d7f5d3SJohn Marino 	);
7286d7f5d3SJohn Marino 
7386d7f5d3SJohn Marino 	if (!dfui_be_present(c, f, &r))
7486d7f5d3SJohn Marino 		abort_backend();
7586d7f5d3SJohn Marino 
7686d7f5d3SJohn Marino 	free(message);
7786d7f5d3SJohn Marino 	dfui_form_free(f);
7886d7f5d3SJohn Marino 	dfui_response_free(r);
7986d7f5d3SJohn Marino }
8086d7f5d3SJohn Marino 
8186d7f5d3SJohn Marino int
confirm_dangerous_action(struct dfui_connection * c,const char * fmt,...)8286d7f5d3SJohn Marino confirm_dangerous_action(struct dfui_connection *c, const char *fmt, ...)
8386d7f5d3SJohn Marino {
8486d7f5d3SJohn Marino 	struct dfui_form *f;
8586d7f5d3SJohn Marino 	struct dfui_response *r;
8686d7f5d3SJohn Marino 	va_list args;
8786d7f5d3SJohn Marino 	char *message;
8886d7f5d3SJohn Marino 	int result = 0;
8986d7f5d3SJohn Marino 
9086d7f5d3SJohn Marino 	va_start(args, fmt);
9186d7f5d3SJohn Marino 	vasprintf(&message, fmt, args);
9286d7f5d3SJohn Marino 	va_end(args);
9386d7f5d3SJohn Marino 
9486d7f5d3SJohn Marino 	f = dfui_form_create(
9586d7f5d3SJohn Marino 	    "confirm_dangerous_action",
9686d7f5d3SJohn Marino 	    "Are you absolutely sure?",
9786d7f5d3SJohn Marino 	    message,
9886d7f5d3SJohn Marino 	    "",
9986d7f5d3SJohn Marino 
10086d7f5d3SJohn Marino 	    "p", "role", "alert",
10186d7f5d3SJohn Marino 
10286d7f5d3SJohn Marino 	    "a", "ok", "OK", "", "",
10386d7f5d3SJohn Marino 	    "a", "cancel", "Cancel", "", "",
10486d7f5d3SJohn Marino 	    NULL
10586d7f5d3SJohn Marino 	);
10686d7f5d3SJohn Marino 
10786d7f5d3SJohn Marino 	if (!dfui_be_present(c, f, &r))
10886d7f5d3SJohn Marino 		abort_backend();
10986d7f5d3SJohn Marino 
11086d7f5d3SJohn Marino 	if (strcmp(dfui_response_get_action_id(r), "ok") == 0)
11186d7f5d3SJohn Marino 		result = 1;
11286d7f5d3SJohn Marino 
11386d7f5d3SJohn Marino 	free(message);
11486d7f5d3SJohn Marino 	dfui_form_free(f);
11586d7f5d3SJohn Marino 	dfui_response_free(r);
11686d7f5d3SJohn Marino 
11786d7f5d3SJohn Marino 	return(result);
11886d7f5d3SJohn Marino }
119