gpt4 book ai didi

linux - 信息命令和手册页

转载 作者:IT王子 更新时间:2023-10-29 00:35:17 28 4
gpt4 key购买 nike

Fedora 19 {尽管我怀疑这是否相关]

如果我调用 info命令实际上没有 info 的主题节点,但确实有手册页,info显然会创建一个名为 (*manpages*)<topic> 的节点来自手册页——即时。

我既找不到任何地方记录此功能,也找不到(显然)如何完成此功能的描述。

谁能给我指点一些关于这个的文档?

最佳答案

我检查了 GNU standalone info manualGNU Info manual并且只发现了一个表明此功能存在的小标志。在description of option --all我们可以读到:

--all -a

Find all files matching the given menu-item (a file or node name).
Three usage patterns are supported, as follows.

First, if --all is used together with --where, info prints the names
of all matching files found on standard output (including *manpages*
if relevant) and exits.

所以恐怕唯一的文档就是源代码。在 info.c你可以找到以下功能。查找“回退到加载手册页”。评论。

/* Get the initial Info file, either by following menus from "(dir)Top",
or what the user specifed with values in filename. */
static char *
get_initial_file (char *filename, int *argc, char ***argv, char **error)
{
char *initial_file = 0; /* First file loaded by Info. */
REFERENCE *entry;

/* If there are any more arguments, the initial file is the
dir entry given by the first one. */
if (!filename && (*argv)[0])
{
/* If they say info -O info, we want to show them the invocation node
for standalone info; there's nothing useful in info.texi. */
if (goto_invocation_p && (*argv)[0]
&& mbscasecmp ((*argv)[0], "info") == 0)
(*argv)[0] = "info-stnd";

entry = lookup_dir_entry ((*argv)[0], 0);
if (entry)
{
initial_file = info_find_fullpath (entry->filename, 0);
if (initial_file)
{
(*argv)++; /* Advance past first remaining argument. */
(*argc)--;

/* Store full path, so that we find the already loaded file in
info_find_file, and show the full path if --where is used. */
entry->filename = initial_file;
add_pointer_to_array (info_copy_reference (entry),
ref_index, ref_list, ref_slots, 2);
return initial_file;
}
}
}

/* User used "--file". */
if (filename)
{
initial_file = info_find_fullpath (filename, 0);

if (!initial_file)
{
if (filesys_error_number)
*error = filesys_error_string (filename, filesys_error_number);
}
else
return initial_file;
}

/* File name lookup. */
if (!filename && (*argv)[0])
{
/* Try finding a file with this name, in case
it exists, but wasn't listed in dir. */
initial_file = info_find_fullpath ((*argv)[0], 0);
if (initial_file)
{
(*argv)++; /* Advance past first remaining argument. */
(*argc)--;
return initial_file;
}
else
asprintf (error, _("No menu item `%s' in node `%s'."),
(*argv)[0], "(dir)Top");
}

/* Fall back to loading man page. */
if (filename || (*argv)[0])
{
NODE *man_node;

debug (3, ("falling back to manpage node"));

man_node = get_manpage_node (filename ? filename : (*argv)[0]);
if (man_node)
{
add_pointer_to_array
(info_new_reference (MANPAGE_FILE_BUFFER_NAME,
filename ? filename : (*argv)[0]),
ref_index, ref_list, ref_slots, 2);

initial_file = MANPAGE_FILE_BUFFER_NAME;
return initial_file;
}
}

/* Inexact dir lookup. */
if (!filename && (*argv)[0])
{
entry = lookup_dir_entry ((*argv)[0], 1);
if (entry)
{
(*argv)++; /* Advance past first remaining argument. */
(*argc)--;
/* Clear error message. */
free (*error);
*error = 0;

initial_file = info_find_fullpath (entry->filename, 0);
/* Store full path, so that we find the already loaded file in
info_find_file, and show the full path if --where is used. */
entry->filename = initial_file;
add_pointer_to_array (info_copy_reference (entry),
ref_index, ref_list, ref_slots, 2);
return initial_file;
}
}

/* Otherwise, we want the dir node. The only node to be displayed
or output will be "Top". */
return 0;
}

man.h包含 MANPAGE_FILE_BUFFER_NAME 的定义:

#define MANPAGE_FILE_BUFFER_NAME "*manpages*"

关于linux - 信息命令和手册页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165217/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com