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