003 File Manager
Current Path:
/usr/src/contrib/dialog
usr
/
src
/
contrib
/
dialog
/
📁
..
📄
CHANGES
(108.53 KB)
📄
COPYING
(25.81 KB)
📄
README
(2.78 KB)
📄
VERSION
(20 B)
📄
aclocal.m4
(195.3 KB)
📄
argv.c
(3.54 KB)
📄
arrows.c
(6.8 KB)
📄
buildlist.c
(31.36 KB)
📄
buttons.c
(16.19 KB)
📄
calendar.c
(24.45 KB)
📄
checklist.c
(17.98 KB)
📄
columns.c
(4.17 KB)
📄
config.guess
(43.14 KB)
📄
config.hin
(75 B)
📄
config.sub
(34.92 KB)
📄
configure
(666.11 KB)
📄
configure.in
(7.57 KB)
📄
demo.pl
(11.44 KB)
📄
dialog-config.in
(4.31 KB)
📄
dialog.1
(60.51 KB)
📄
dialog.3
(124.54 KB)
📄
dialog.c
(52.45 KB)
📄
dialog.h
(37.7 KB)
📄
dialog.lsm
(1.1 KB)
📄
dialog.pl
(15.08 KB)
📄
dlg_colors.h
(6.87 KB)
📄
dlg_keys.c
(20.68 KB)
📄
dlg_keys.h
(5.23 KB)
📄
editbox.c
(16.81 KB)
📄
formbox.c
(23.3 KB)
📄
fselect.c
(22.06 KB)
📄
guage.c
(10.26 KB)
📄
headers-sh.in
(5.35 KB)
📄
headers.sh
(3.6 KB)
📄
help.c
(1.4 KB)
📄
inputbox.c
(7.04 KB)
📄
inputstr.c
(17.73 KB)
📄
install-sh
(6.96 KB)
📄
makefile.in
(10.07 KB)
📄
menubox.c
(20.26 KB)
📄
mixedform.c
(3.39 KB)
📄
mixedgauge.c
(9.6 KB)
📄
mouse.c
(3.5 KB)
📄
mousewget.c
(2.19 KB)
📄
msgbox.c
(4.99 KB)
📁
package
📄
pause.c
(6.53 KB)
📁
po
📄
prgbox.c
(2.73 KB)
📄
progressbox.c
(9.88 KB)
📄
rangebox.c
(10.54 KB)
📄
rc.c
(15 KB)
📄
rename.sh
(3.04 KB)
📁
samples
📄
tailbox.c
(9.53 KB)
📄
textbox.c
(24.86 KB)
📄
timebox.c
(10.27 KB)
📄
trace.c
(5.72 KB)
📄
treeview.c
(16.55 KB)
📄
ttysize.c
(2.28 KB)
📄
ui_getc.c
(14.03 KB)
📄
util.c
(64.44 KB)
📄
version.c
(1.01 KB)
📄
yesno.c
(4.28 KB)
Editing: argv.c
/* * $Id: argv.c,v 1.12 2018/06/12 22:47:23 tom Exp $ * * argv - Reusable functions for argv-parsing. * * Copyright 2011-2017,2018 Thomas E. Dickey * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License, version 2.1 * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to * Free Software Foundation, Inc. * 51 Franklin St., Fifth Floor * Boston, MA 02110, USA. */ #include <dialog.h> #include <string.h> /* * Convert a string to an argv[], returning a char** index (which must be * freed by the caller). The string is modified (replacing gaps between * tokens with nulls). */ char ** dlg_string_to_argv(char *blob) { size_t n, k; int pass; size_t length = strlen(blob); char **result = 0; #ifdef HAVE_DLG_TRACE if (dialog_state.trace_output) { DLG_TRACE(("# dlg_string_to_argv:\n")); DLG_TRACE(("# given:\n")); for (n = k = 0; n < length; ++n) { if (blob[n] == '\n') { DLG_TRACE(("#%s\t%.*s\\n\n", k ? "+" : "", (int) (n - k), blob + k)); k = n + 1; } } if (n > k) { DLG_TRACE(("#%s\t%.*s\n", k ? "+" : "", (int) (n - k), blob + k)); } DLG_TRACE(("# result:\n")); } #endif for (pass = 0; pass < 2; ++pass) { bool inparm = FALSE; bool quoted = FALSE; bool escape = FALSE; char *param = blob; size_t count = 0; for (n = 0; n < length; ++n) { if (escape) { ; } else if (quoted && blob[n] == '"') { quoted = FALSE; } else if (blob[n] == '"') { quoted = TRUE; if (!inparm) { if (pass) result[count] = param; ++count; inparm = TRUE; } } else if (!quoted && isspace(UCH(blob[n]))) { if (inparm) { if (pass) { *param++ = '\0'; } inparm = FALSE; } } else { if (blob[n] == '\\') { if (n + 1 == length) { break; /* The string is terminated by a backslash */ } else if ((blob[n + 1] == '\\') || (blob[n + 1] == '"') || (!quoted && blob[n + 1] == '\n')) { /* eat the backslash */ if (pass) { --length; for (k = n; k < length; ++k) blob[k] = blob[k + 1]; blob[length] = '\0'; } else { escape = TRUE; continue; } } } if (!inparm) { if (pass) result[count] = param; ++count; inparm = TRUE; } if (pass) { *param++ = blob[n]; } } escape = FALSE; } if (!pass) { if (count) { result = dlg_calloc(char *, count + 1); assert_ptr(result, "string_to_argv"); } else { break; /* no tokens found */ } } else { *param = '\0'; } } #ifdef HAVE_DLG_TRACE if (result != 0) { for (n = 0; result[n] != 0; ++n) { DLG_TRACE(("#\targv[%d] = %s\n", (int) n, result[n])); } } #endif return result; } /* * Count the entries in an argv list. */ int dlg_count_argv(char **argv) { int result = 0; if (argv != 0) { while (argv[result] != 0) ++result; } return result; } int dlg_eat_argv(int *argcp, char ***argvp, int start, int count) { int k; *argcp -= count; for (k = start; k <= *argcp; k++) (*argvp)[k] = (*argvp)[k + count]; (*argvp)[*argcp] = 0; return TRUE; }
Upload File
Create Folder