Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/path.sgml')
-rw-r--r--winsup/cygwin/path.sgml178
1 files changed, 178 insertions, 0 deletions
diff --git a/winsup/cygwin/path.sgml b/winsup/cygwin/path.sgml
new file mode 100644
index 000000000..79f97dff5
--- /dev/null
+++ b/winsup/cygwin/path.sgml
@@ -0,0 +1,178 @@
+<sect1 id="func-cygwin-conv-path">
+<title>cygwin_conv_path</title>
+
+<funcsynopsis><funcprototype>
+<funcdef>extern "C" ssize_t
+<function>cygwin_conv_path</function></funcdef>
+<paramdef>cygwin_conv_path_t <parameter>what</parameter></paramdef>
+<paramdef>const void * <parameter>from</parameter></paramdef>
+<paramdef>void * <parameter>to</parameter></paramdef>
+<paramdef>size_t <parameter>size</parameter></paramdef>
+</funcprototype></funcsynopsis>
+
+<para>Use this function to convert POSIX paths in
+<parameter>from</parameter> to Win32 paths in <parameter>to</parameter>
+or, vice versa, Win32 paths in <parameter>from</parameter> to POSIX paths
+in <parameter>to</parameter>. <parameter>what</parameter>
+defines the direction of this conversion and can be any of the below
+values.</para>
+
+<programlisting>
+ CCP_POSIX_TO_WIN_A /* from is char *posix, to is char *win32 */
+ CCP_POSIX_TO_WIN_W, /* from is char *posix, to is wchar_t *win32 */
+ CCP_WIN_A_TO_POSIX, /* from is char *win32, to is char *posix */
+ CCP_WIN_W_TO_POSIX, /* from is wchar_t *win32, to is char *posix */
+</programlisting>
+
+<para>You can additionally or the following values to
+<parameter>what</parameter>, to define whether you want the resulting
+path in <parameter>to</parameter> to be absolute or if you want to keep
+relative paths in relative notation. Creating absolute paths is the
+default.</para>
+
+<programlisting>
+ CCP_ABSOLUTE = 0, /* Request absolute path (default). */
+ CCP_RELATIVE = 0x100 /* Request to keep path relative. */
+</programlisting>
+
+<para><parameter>size</parameter> is the size of the buffer pointed to
+by <parameter>to</parameter> in bytes. If <parameter>size</parameter>
+is 0, <function>cygwin_conv_path</function> just returns the required
+buffer size in bytes. Otherwise, it returns 0 on success, or -1 on
+error and errno is set to one of the below values.</para>
+
+<programlisting>
+ EINVAL what has an invalid value or from is NULL.
+ EFAULT from or to point into nirvana.
+ ENAMETOOLONG the resulting path is longer than 32K, or, in case
+ of what == CCP_POSIX_TO_WIN_A, longer than MAX_PATH.
+ ENOSPC size is less than required for the conversion.
+</programlisting>
+
+<example>
+<title>Example use of cygwin_conv_path</title>
+<programlisting>
+<![CDATA[
+#include <sys/cygwin.h>
+
+/* Conversion from incoming Win32 path given as wchar_t *win32 to POSIX path.
+ If incoming path is a relative path, stick to it. First ask how big
+ the output buffer has to be and allocate space dynamically. */
+ssize_t size;
+char *posix;
+size = cygwin_conv_path (CCP_WIN_W_TO_POSIX | CCP_RELATIVE, win32, NULL, 0);
+if (size < 0)
+ perror ("cygwin_conv_path");
+else
+ {
+ posix = (char *) malloc (size);
+ if (cygwin_conv_path (CCP_WIN_W_TO_POSIX | CCP_RELATIVE, win32,
+ posix, size))
+ perror ("cygwin_conv_path");
+ }
+]]>
+</programlisting>
+</example>
+
+</sect1>
+
+<sect1 id="func-cygwin-conv-path-list">
+<title>cygwin_conv_path_list</title>
+
+<funcsynopsis><funcprototype>
+<funcdef>extern "C" ssize_t
+<function>cygwin_conv_path_list</function></funcdef>
+<paramdef>cygwin_conv_path_t <parameter>what</parameter></paramdef>
+<paramdef>const void * <parameter>from</parameter></paramdef>
+<paramdef>void * <parameter>to</parameter></paramdef>
+<paramdef>size_t <parameter>size</parameter></paramdef>
+</funcprototype></funcsynopsis>
+
+<para>This is the same as <function>cygwin_conv_path</function>, but the
+input is treated as a path list in $PATH or %PATH% notation.</para>
+<para>If <parameter>what</parameter> is CCP_POSIX_TO_WIN_A or
+CCP_POSIX_TO_WIN_W, given a POSIX $PATH-style string (i.e. /foo:/bar)
+convert it to the equivalent Win32 %PATH%-style string (i.e. d:\;e:\bar).</para>
+<para>If <parameter>what</parameter> is CCP_WIN_A_TO_POSIX or
+CCP_WIN_W_TO_POSIX, given a Win32 %PATH%-style string (i.e. d:\;e:\bar)
+convert it to the equivalent POSIX $PATH-style string (i.e. /foo:/bar).</para>
+<para><parameter>size</parameter> is the size of the buffer pointed to by
+<parameter>to</parameter> in bytes.</para>
+
+<para>See also <link linkend="func-cygwin-conv-path">cygwin_conv_path</link></para>
+
+</sect1>
+
+<sect1 id="func-cygwin-create-path">
+<title>cygwin_create_path</title>
+
+<funcsynopsis><funcprototype>
+<funcdef>extern "C" void *
+<function>cygwin_create_path</function></funcdef>
+<paramdef>cygwin_conv_path_t <parameter>what</parameter></paramdef>
+<paramdef>const void * <parameter>from</parameter></paramdef>
+</funcprototype></funcsynopsis>
+
+<para>This is equivalent to the <function>cygwin_conv_path</function>, except
+that <function>cygwin_create_path</function> does not take a buffer pointer
+for the result of the conversion as input. Rather it allocates the buffer
+itself using <function>malloc</function>(3) and returns a pointer to this
+buffer. In case of error it returns NULL and sets errno to one of the
+values defined for <function>cygwin_conv_path</function>. Additionally
+errno can be set to the below value.</para>
+
+<programlisting>
+ ENOMEM Insufficient memory was available.
+</programlisting>
+
+<para>When you don't need the returned buffer anymore, use
+<function>free</function>(3) to deallocate it.</para>
+
+<para>See also <link linkend="func-cygwin-conv-path">cygwin_conv_path</link></para>
+
+</sect1>
+
+<sect1 id="func-cygwin-posix-path-list-p">
+<title>cygwin_posix_path_list_p</title>
+
+<funcsynopsis><funcprototype>
+<funcdef>extern "C" int
+<function>cygwin_posix_path_list_p</function></funcdef>
+<paramdef>const char *<parameter>path</parameter></paramdef>
+</funcprototype></funcsynopsis>
+
+<para>This function tells you if the supplied
+<parameter>path</parameter> is a POSIX-style path (i.e. posix names,
+forward slashes, colon delimiters) or a Win32-style path (drive
+letters, reverse slashes, semicolon delimiters. The return value is
+true if the path is a POSIX path. Note that "_p" means "predicate", a
+lisp term meaning that the function tells you something about the
+parameter.</para>
+
+</sect1>
+
+<sect1 id="func-cygwin-split-path">
+<title>cygwin_split_path</title>
+
+<funcsynopsis><funcprototype>
+<funcdef>extern "C" void
+<function>cygwin_split_path</function>
+</funcdef>
+<paramdef>const char * <parameter>path</parameter></paramdef>
+<paramdef>char * <parameter>dir</parameter></paramdef>
+<paramdef>char * <parameter>file</parameter></paramdef>
+</funcprototype></funcsynopsis>
+
+<para>Split a path into the directory and the file portions. Both
+<parameter>dir</parameter> and <parameter>file</parameter> are
+expected to point to buffers of sufficient size. </para>
+
+<example>
+<title>Example use of cygwin_split_path</title>
+<programlisting>
+char dir[200], file[100];
+cygwin_split_path("c:/foo/bar.c", dir, file);
+printf("dir=%s, file=%s\n", dir, file);
+</programlisting>
+</example>
+</sect1>