From owner-svn-src-user@FreeBSD.ORG Wed Nov 3 10:34:21 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B709106566C; Wed, 3 Nov 2010 10:34:21 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A4088FC18; Wed, 3 Nov 2010 10:34:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA3AYLGM017889; Wed, 3 Nov 2010 10:34:21 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA3AYLgJ017886; Wed, 3 Nov 2010 10:34:21 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201011031034.oA3AYLgJ017886@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Wed, 3 Nov 2010 10:34:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214733 - user/ae/usr.sbin/sade X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Nov 2010 10:34:21 -0000 Author: ae Date: Wed Nov 3 10:34:21 2010 New Revision: 214733 URL: http://svn.freebsd.org/changeset/base/214733 Log: Remove stale declarations. Fix a typo [1]. Add check for correctness of volume label. Construct tunefs command-line based on info given from dialog. Allow long messages for dmenu_open_errormsg. Noticed by: netchild [1] Modified: user/ae/usr.sbin/sade/menus.c user/ae/usr.sbin/sade/ufsed.c Modified: user/ae/usr.sbin/sade/menus.c ============================================================================== --- user/ae/usr.sbin/sade/menus.c Wed Nov 3 10:24:57 2010 (r214732) +++ user/ae/usr.sbin/sade/menus.c Wed Nov 3 10:34:21 2010 (r214733) @@ -135,12 +135,8 @@ restorescr(WINDOW *win) void dmenu_open_errormsg(char *msg) { - char buf[80]; - int width; WINDOW *win = savescr(); - snprintf(buf, sizeof(buf), "An error occured: %s", msg); - width = (strlen(buf) + 5) % 70; - dialog_msgbox("Error", buf, 5, width, 1); + dialog_mesgbox("Error", msg, -1, -1); restorescr(win); } Modified: user/ae/usr.sbin/sade/ufsed.c ============================================================================== --- user/ae/usr.sbin/sade/ufsed.c Wed Nov 3 10:24:57 2010 (r214732) +++ user/ae/usr.sbin/sade/ufsed.c Wed Nov 3 10:34:21 2010 (r214733) @@ -53,6 +53,8 @@ __FBSDID("$FreeBSD$"); #include "customdlg.h" #include "mntopts.h" +#define CMDLEN_MAX 256 +#define PATH_TUNEFS "/sbin/tunefs" static char *ask_recreate_msg = "WARNING: Selected partition already contains a file system!\n\n" @@ -225,16 +227,6 @@ set_statusline(char *msg) } } -enum hist_cmd_type { - NEWFS, TUNEFS -}; - -struct hist_cmd_entry { - enum hist_cmd_type type; - struct de_fs *pfs; - char *args; -}; - static int ufsed_history_rollback(void *pentry) { @@ -250,12 +242,9 @@ ufsed_history_play(void *pentry) static int ufslist_reread(struct ufslist *fslist) { - int error; ufslist_free(fslist); - error = ufslist_get(fslist); - - return (error); + return (ufslist_get(fslist)); } static int @@ -277,12 +266,12 @@ ufsed_tunefs(history_t hist, struct ufsi { struct custom_dlg dlg; struct dlg_item *item; - DLG_BUTTON *btnOk, *btnCancel, *btnCustom; + DLG_BUTTON *btnOk, *btnCancel, *btnAdvanced; DLG_EDIT *eLabel; WINDOW *win; uint32_t flags; int q, h, w, ret, i; - char *title_buf; + char buf[CMDLEN_MAX], *s; struct { DLG_CHECKBOX *item; uint32_t flag; @@ -294,14 +283,14 @@ ufsed_tunefs(history_t hist, struct ufsi { NULL, FS_ACLS, "POSIX.1e ACL", "-a" }, { NULL, FS_MULTILABEL, "MAC multilabel", "-l" }, { NULL, FS_GJOURNAL, "GEOM journaling", "-J" }, - { NULL, FS_NFS4ACLS, "NFSv4 ALC", "-N" } + { NULL, FS_NFS4ACLS, "NFSv4 ACL", "-N" } }; win = savescr(); dlg_init(&dlg); - asprintf(&title_buf, "Change a file system parameters for \"%s\":", - pfs->partname); - dlg_add_label(&dlg, 1, 2, 55, 2, title_buf); + snprintf(buf, sizeof(buf), + "Change a file system parameters for \"%s\":", pfs->partname); + dlg_add_label(&dlg, 1, 2, 55, 2, buf); eLabel = dlg_add_edit(&dlg, 3, 2, 24, "Volume Label:", MAXVOLLEN, pfs->volname); for (i = 0; i < sizeof(checkbox) / sizeof(checkbox[0]); i++) @@ -311,10 +300,11 @@ ufsed_tunefs(history_t hist, struct ufsi checkbox[i].label); btnOk = dlg_add_button(&dlg, 9, 14, " Ok "); btnCancel = dlg_add_button(&dlg, 9, 26, "Cancel"); - btnCustom = dlg_add_button(&dlg, 9, 38, "Custom"); + btnAdvanced = dlg_add_button(&dlg, 9, 38, "Advanced"); use_helpline("Press F1 for help"); dlg_autosize(&dlg, &w, &h); dlg_open_dialog(&dlg, w + 1, h + 1, "Change File System"); +again: q = 0; do { ret = dlg_proc(&dlg, tunefs_keyhndl); @@ -329,7 +319,7 @@ ufsed_tunefs(history_t hist, struct ufsi q = 1; else if (item == btnOk) q = 2; - else if (item == btnCustom) + else if (item == btnAdvanced) q = 3; else dlg_focus_next(&dlg); @@ -348,20 +338,49 @@ ufsed_tunefs(history_t hist, struct ufsi }; } while (q == 0); - flags = 0; + if (q != 2) + goto done; + + flags = ret = 0; + s = dlg_edit_get_value(&dlg, eLabel); + if (s != NULL && *s != '\0') { /* volname has been specified */ + i = 0; + while (isalnum(s[i++])); + if (s[i] != '\0') { + dmenu_open_errormsg("Invalid character in volume " + "label. Only alphanumerics characters are " + "allowed."); + goto again; + } + /* check for volname changes */ + if (pfs->volname == NULL || + strncmp(pfs->volname, s, MAXVOLLEN) != 0) + ret = 1; + } else if (pfs->volname != NULL) /* we want to reset volume label */ + ret = 1; for (i = 0; i < sizeof(checkbox) / sizeof(checkbox[0]); i++) { if (dlg_checkbox_checked(&dlg, checkbox[i].item)) flags |= checkbox[i].flag; else flags &= ~checkbox[i].flag; } - if (flags != pfs->flags) { - /* something changed */ + if (flags != pfs->flags || ret != 0) { /* something changed */ + snprintf(buf, sizeof(buf), "%s -L \"%s\"", PATH_TUNEFS, + (s != NULL && *s != '\0') ? s: ""); + for (i = 0; i < sizeof(checkbox) / sizeof(checkbox[0]); i++) { + snprintf(buf, sizeof(buf), "%s %s %s", buf, + checkbox[i].arg, + dlg_checkbox_checked(&dlg, checkbox[i].item) ? + "enable": "disable"); + } + snprintf(buf, sizeof(buf), "%s %s%s", buf, _PATH_DEV, + pfs->partname); + /* add command to history */ } +done: restorescr(win); dlg_close_dialog(&dlg); dlg_free(&dlg); - free(title_buf); }