From owner-svn-src-user@FreeBSD.ORG Mon Dec 6 10:58:13 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 E1FCB1065672; Mon, 6 Dec 2010 10:58:13 +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 D0F4B8FC20; Mon, 6 Dec 2010 10:58:13 +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 oB6AwDtR030800; Mon, 6 Dec 2010 10:58:13 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oB6AwDHb030798; Mon, 6 Dec 2010 10:58:13 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201012061058.oB6AwDHb030798@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Mon, 6 Dec 2010 10:58:13 +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: r216228 - 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: Mon, 06 Dec 2010 10:58:14 -0000 Author: ae Date: Mon Dec 6 10:58:13 2010 New Revision: 216228 URL: http://svn.freebsd.org/changeset/base/216228 Log: Add "title" field to describe what task is doing. Modified: user/ae/usr.sbin/sade/ufsed.c Modified: user/ae/usr.sbin/sade/ufsed.c ============================================================================== --- user/ae/usr.sbin/sade/ufsed.c Mon Dec 6 10:24:06 2010 (r216227) +++ user/ae/usr.sbin/sade/ufsed.c Mon Dec 6 10:58:13 2010 (r216228) @@ -91,6 +91,11 @@ struct ufsinfo { char *mntonname; /* current mountpoint */ }; +struct ufsed_history_entry { + char *title; + char *cmd; +}; + static int ufslist_add(struct ufslist *, struct de_device *, struct de_part *); static void ufslist_free(struct ufslist *); static int ufslist_count(struct ufslist *); @@ -227,11 +232,20 @@ set_statusline(char *msg) } } +static void +ufsed_history_free(struct ufsed_history_entry *entry) +{ + + free(entry->title); + free(entry->cmd); + free(entry); +} + static int ufsed_history_rollback(void *pentry) { - free(pentry); + ufsed_history_free((struct ufsed_history_entry *)pentry); return (0); } @@ -240,7 +254,7 @@ ufsed_history_play(void *pentry) { /* system(pentry); */ - free(pentry); + ufsed_history_free((struct ufsed_history_entry *)pentry); return (0); } @@ -253,14 +267,17 @@ ufslist_reread(struct ufslist *fslist) } static int -ufsed_history_add(history_t hist, const char *cmd) +ufsed_history_add(history_t hist, const char *title, const char *cmd) { - char *entry; + struct ufsed_history_entry *entry; - entry = strdup(cmd); + entry = malloc(sizeof(*entry)); if (entry == NULL) return (ENOMEM); - + entry->title = strdup(title); + entry->cmd = strdup(cmd); + if (entry->cmd == NULL || entry->title == NULL) + ufsed_history_free(entry); return (history_add_entry(hist, entry)); } @@ -289,7 +306,7 @@ ufsed_tunefs(history_t hist, struct ufsi WINDOW *win; uint32_t flags; int q, h, w, ret, i; - char buf[CMDLEN_MAX], *s; + char buf[CMDLEN_MAX], *s, *prompt; struct { DLG_CHECKBOX *item; uint32_t flag; @@ -306,9 +323,9 @@ ufsed_tunefs(history_t hist, struct ufsi win = savescr(); dlg_init(&dlg); - snprintf(buf, sizeof(buf), - "Change a file system parameters for \"%s\":", pfs->partname); - dlg_add_label(&dlg, 1, 2, 55, 2, buf); + asprintf(&prompt, "Change file system parameters for \"%s\":", + pfs->partname); + dlg_add_label(&dlg, 1, 2, 55, 2, prompt); eLabel = dlg_add_edit(&dlg, 3, 2, 24, "Volume Label:", MAXVOLLEN, pfs->volname); for (i = 0; i < sizeof(checkbox) / sizeof(checkbox[0]); i++) @@ -395,7 +412,7 @@ again: snprintf(buf, sizeof(buf), "%s %s%s", buf, _PATH_DEV, pfs->partname); /* add command to history */ - ret = ufsed_history_add(hist, buf); + ret = ufsed_history_add(hist, prompt, buf); if (ret) dmenu_open_errormsg("Operation failed."); else { /* do fake changes to update current view */ @@ -411,6 +428,7 @@ done: restorescr(win); dlg_close_dialog(&dlg); dlg_free(&dlg); + free(prompt); } static void @@ -425,7 +443,7 @@ ufsed_newfs(history_t hist, struct ufsin WINDOW *win; uint64_t num, tmp; int q, h, w, ret, i; - char buf[CMDLEN_MAX], *s, *volname; + char buf[CMDLEN_MAX], *s, *volname, *prompt; struct { DLG_CHECKBOX *item; uint32_t flag; @@ -444,9 +462,8 @@ ufsed_newfs(history_t hist, struct ufsin win = savescr(); dlg_init(&dlg); - snprintf(buf, sizeof(buf), - "Create new file system on \"%s\":", pfs->partname); - dlg_add_label(&dlg, 1, 2, 55, 2, buf); + asprintf(&prompt, "Create new file system on \"%s\":", pfs->partname); + dlg_add_label(&dlg, 1, 2, 55, 2, prompt); eLabel = dlg_add_edit(&dlg, 3, 2, 24, "Volume Label:", MAXVOLLEN, NULL); eBlock = dlg_add_edit(&dlg, 7, 2, 24, "Block Size:", 8, "16384"); @@ -570,7 +587,7 @@ again: } snprintf(buf, sizeof(buf), "%s %s%s", buf, _PATH_DEV, pfs->partname); /* add newfs command to history */ - ret = ufsed_history_add(hist, buf); + ret = ufsed_history_add(hist, prompt, buf); if (ret) dmenu_open_errormsg("Operation failed."); else { /* do fake changes to update current view */ @@ -598,7 +615,10 @@ again: if (num > 0) { snprintf(buf, sizeof(buf), "%s %s%s", buf, _PATH_DEV, pfs->partname); - ret = ufsed_history_add(hist, buf); + free(prompt); + asprintf(&prompt, "Change file system parameters for \"%s\":", + pfs->partname); + ret = ufsed_history_add(hist, prompt, buf); if (ret) dmenu_open_errormsg("Operation failed."); else { /* do fake changes to update current view */ @@ -609,6 +629,7 @@ done: restorescr(win); dlg_close_dialog(&dlg); dlg_free(&dlg); + free(prompt); }