-->

Previous | Table of Contents | Next

Page 87

ctags


ctags—Generates tags and (optionally) refs files

SYNOPSIS


ctags [-BSstvraT] filesnames...

DESCRIPTION

ctags generates the tags and refs files from a group of C source files. The tags file is used by the elvis :tag command, control-] command, and -t option. The refs file is sometimes used by the ref(1) program.

Each C source file is scanned for #define statements and global function definitions. The name of the macro or function becomes the name of a tag. For each tag, a line is added to the tags file that contains the following:

The filenames list will typically be the names of all C source files in the current directory, like this:


$ ctags -stv *.[ch]

OPTIONS

-B Normally, ctags encloses regular expressions in slashes (/regexp/), which causes elvis to search from the top of the file. The -B flag causes ctags to enclose the regular expressions in question marks (?regexp?) so elvis will search backward from the bottom of the file. This rarely matters.
-t Include typedefs. A tag will be generated for each user-defined type. Also tags will be generated for struct and enum names. Types are considered to be global if they are defined in a header file, and static if they are defined in a C source file.
-v Include variable declarations. A tag will be generated for each variable, except for those that are declared inside the body of a function.
-s Include static tags. ctags will normally put global tags in the tags file, and silently ignore the static tags. This flag causes both global and static tags to be added. The name of a static tag is generated by prefixing the name of the declared item with the name of the file where it is defined, with a colon in between. For example, static foo(){} in bar.c results in a tag named bar.c:foo.
-S Include static tags, but make them look like global tags. Most tags-aware programs don't like the filename:tagname tags produced by the -s flag, so -S was added as an alternative. If elvis and ref are the only programs that read the tags file, then you don't need -S; otherwise, you do.
-r This causes ctags to generate both tags and refs. Without -r, it would only generate tags.
-a Append to tags, and maybe refs. Normally, ctags overwrites these files each time it is invoked. This flag is useful when you have too many files in the current directory for you to list them on a single command line; it allows you to split the arguments among several invocations.
-T This flag isn't available on all systems. UNIX has it, but most others don't. The -T flag prevents ctags from generating a tags file. This is useful when you want to generate a refs without changing tags.

FILES

tags A cross-reference that lists each tag name, the name of the source file that contains it, and a way to locate a particular line in the source file.
refs The refs file contains the definitions for each tag in the tags file, and very little else. This file can be useful, for example, when licensing restrictions prevent you from making the source code to the standard C library readable by everybody, but you still want everybody to know what arguments the library functions need.

Page 88

BUGS

ctags is sensitive to indenting and line breaks. Consequently, it might not discover all of the tags in a file that is formatted in an unusual way.

SEE ALSO


elvis(1), refs(1)

AUTHOR

Steve Kirkendall (kirkenda@cs.pdx.edu)

cu

cu—Call up another system

SYNOPSIS


cu [ options ] [ system | phone | "dir" ]

DESCRIPTION

The cu command is used to call up another system and act as a dial in terminal. It can also do simple file transfers with no error checking.

cu takes a single argument, besides the options. If the argument is the string dir, cu will make a direct connection to the port. This may only be used by users with write access to the port, as it permits reprogramming the modem.

Otherwise, if the argument begins with a digit, it is taken to be a phone number to call. Otherwise, it is taken to be the name of a system to call. The _z or —system option may be used to name a system beginning with a digit, and the _c or —phone option may be used to name a phone number that does not begin with a digit.

cu locates a port to use in the UUCP configuration files. If a simple system name is given, it will select a port appropriate for that system. The _p, —port, _l, —line, _s, and —speed options may be used to control the port selection.

When a connection is made to the remote system, cu forks into two processes. One reads from the port and writes to the terminal, while the other reads from the terminal and writes to the port.

cu provides several commands that may be used during the conversation. The commands all begin with an escape character, initially ~ (tilde). The escape character is only recognized at the beginning of a line. To send an escape character to the remote system at the start of a line, it must be entered twice. All commands are either a single character or a word beginning with % (percent sign).

cu recognizes the following commands:

~. Terminate the conversation.
~! command Run command in a shell. If command is empty, starts up a shell.
~$ command Run command, sending the standard output to the remote system.
~| command Run command, taking the standard input from the remote system.
~+ command Run command, taking the standard input from the remote system and sending the standard output to the remote system.
~#, ~%break Send a break signal, if possible.
~c directory, ~%cd directory Change the local directory.
~> file Send a file to the remote system. This just dumps the file over the communication line. It is assumed that the remote system is expecting it.
~< Receive a file from the remote system. This prompts for the local filename and for the remote command to execute to begin the file transfer. It continues accepting data until the contents of the eofread variable are seen.

Previous | Table of Contents | Next