Index: src/string/charset/iso-8859-1.c =================================================================== --- src/string/charset/iso-8859-1.c (.../trunk) (revision 47551) +++ src/string/charset/iso-8859-1.c (.../branches/cfunctionsdocs) (revision 47906) @@ -541,6 +541,8 @@ =item C +Returns Boolean. + =cut */ @@ -591,6 +593,8 @@ =item C +Returns C. + =cut */ Index: src/string/charset/binary.c =================================================================== --- src/string/charset/binary.c (.../trunk) (revision 47551) +++ src/string/charset/binary.c (.../branches/cfunctionsdocs) (revision 47906) @@ -407,6 +407,8 @@ =item C +Returns Boolean. + =cut */ @@ -423,6 +425,8 @@ =item C +Find a character in the given character class. + =cut */ @@ -440,6 +444,8 @@ =item C +Returns C. + =cut */ @@ -456,6 +462,9 @@ =item C +Creates a new STRING object from a single codepoint C. Returns +the new STRING. + =cut */ Index: src/string/charset/unicode.c =================================================================== --- src/string/charset/unicode.c (.../trunk) (revision 47551) +++ src/string/charset/unicode.c (.../branches/cfunctionsdocs) (revision 47906) @@ -738,6 +738,8 @@ =item C +Returns Boolean. + =cut */ @@ -834,6 +836,8 @@ =item C +Returns Boolean. + =cut */ @@ -861,6 +865,8 @@ =item C +Find a character in the given character class. + =cut */ @@ -901,6 +907,8 @@ =item C +Returns C. + =cut */ Index: src/string/charset/ascii.c =================================================================== --- src/string/charset/ascii.c (.../trunk) (revision 47551) +++ src/string/charset/ascii.c (.../branches/cfunctionsdocs) (revision 47906) @@ -678,6 +678,8 @@ =item C +Returns Boolean. + =cut */ @@ -729,6 +731,8 @@ =item C +Returns C. + =cut */ @@ -883,6 +887,14 @@ } /* + +=back + +=cut + +*/ + +/* * Local variables: * c-file-style: "parrot" * End: Index: src/io/api.c =================================================================== --- src/io/api.c (.../trunk) (revision 47551) +++ src/io/api.c (.../branches/cfunctionsdocs) (revision 47906) @@ -20,8 +20,8 @@ is used in Parrot ops. TODO: Where possible, extract some of the filehandle-related details into -src/io/filehandle.c, and extract the stringhandle details into -src/io/io_string.c. +F, and extract the stringhandle details into +a new F. =cut Index: MANIFEST =================================================================== --- MANIFEST (.../trunk) (revision 47551) +++ MANIFEST (.../branches/cfunctionsdocs) (revision 47906) @@ -1,7 +1,7 @@ # ex: set ro: # $Id$ # -# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 9 14:23:50 2010 UT +# generated by tools/dev/mk_manifest_and_skip.pl Sat Jun 26 13:30:18 2010 UT # # See below for documentation on the format of this file. # @@ -278,7 +278,6 @@ config/gen/platform/cygwin/math.c [] config/gen/platform/darwin/begin.c [] config/gen/platform/darwin/hires_timer.c [] -config/gen/platform/darwin/memalign.c [] config/gen/platform/generic/dl.c [] config/gen/platform/generic/dl.h [] config/gen/platform/generic/env.c [] @@ -288,7 +287,6 @@ config/gen/platform/generic/itimer.c [] config/gen/platform/generic/math.c [] config/gen/platform/generic/math.h [] -config/gen/platform/generic/memalign.c [] config/gen/platform/generic/memexec.c [] config/gen/platform/generic/platform_limits.h [] config/gen/platform/generic/signal.c [] Index: compilers/pirc/src/pircapi.c =================================================================== --- compilers/pirc/src/pircapi.c (.../trunk) (revision 47551) +++ compilers/pirc/src/pircapi.c (.../branches/cfunctionsdocs) (revision 47906) @@ -17,7 +17,10 @@ /* HEADERIZER BEGIN: static */ /* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */ +/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */ +/* HEADERIZER END: static */ + /* =head1 DESCRIPTION @@ -72,17 +75,15 @@ =item C -=cut - This will be the proper declaration after testing for thread-safety: void parse_file(int flexdebug, FILE *infile, char * const filename, int flags, char * const outputfile) +=cut + */ - - void parse_file(PARROT_INTERP, int flexdebug, ARGIN(FILE *infile), ARGIN(char * const filename), int flags, @@ -260,6 +261,8 @@ =item C +Returns NULL. + =cut */ @@ -274,9 +277,7 @@ } -/* HEADERIZER END: static */ - /* =back Index: t/codingstd/c_function_docs.t =================================================================== --- t/codingstd/c_function_docs.t (.../trunk) (revision 47551) +++ t/codingstd/c_function_docs.t (.../branches/cfunctionsdocs) (revision 47906) @@ -91,28 +91,6 @@ } __DATA__ -compilers/pirc/src/pircapi.c -config/gen/platform/ansi/dl.c -config/gen/platform/ansi/exec.c -config/gen/platform/ansi/time.c -config/gen/platform/darwin/memalign.c -config/gen/platform/generic/dl.c -config/gen/platform/generic/exec.c -config/gen/platform/generic/math.c -config/gen/platform/generic/memalign.c -config/gen/platform/generic/stat.c -config/gen/platform/generic/time.c -config/gen/platform/netbsd/math.c -config/gen/platform/openbsd/math.c -config/gen/platform/solaris/math.c -config/gen/platform/solaris/time.c -examples/compilers/japhc.c -src/gc/generational_ms.c -src/io/io_string.c -src/string/charset/ascii.c -src/string/charset/binary.c -src/string/charset/iso-8859-1.c -src/string/charset/unicode.c # Local Variables: # mode: cperl Index: config/gen/platform.pm =================================================================== --- config/gen/platform.pm (.../trunk) (revision 47551) +++ config/gen/platform.pm (.../branches/cfunctionsdocs) (revision 47906) @@ -191,7 +191,6 @@ dl.c stat.c math.c - memalign.c signal.c itimer.c memexec.c Index: config/gen/makefiles/root.in =================================================================== --- config/gen/makefiles/root.in (.../trunk) (revision 47551) +++ config/gen/makefiles/root.in (.../branches/cfunctionsdocs) (revision 47906) @@ -1798,7 +1798,7 @@ manifest_tests : $(PERL) t/harness $(MANIFEST_TEST_FILES) -examples_tests : +examples_tests : test_prep $(PERL) t/harness $(EXAMPLES_TEST_FILES) # benchmark tests Index: config/gen/platform/netbsd/math.c =================================================================== --- config/gen/platform/netbsd/math.c (.../trunk) (revision 47551) +++ config/gen/platform/netbsd/math.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,7 +1,7 @@ /* $Id$ */ /* - * Copyright (C) 2006-2007, Parrot Foundation. + * Copyright (C) 2006-2010, Parrot Foundation. */ /* @@ -12,7 +12,7 @@ =head1 DESCRIPTION -math stuff +Mathematical functions. =head2 Functions @@ -29,7 +29,7 @@ =item C -return true if the Numval has a negative sign. +Return true if the Numval has a negative sign. This is mostly for handling the -0.0 case. =cut @@ -57,6 +57,8 @@ =item C +Like C, only taking long double instead of double. + =cut */ Index: config/gen/platform/darwin/memalign.c =================================================================== --- config/gen/platform/darwin/memalign.c (.../trunk) (revision 47551) +++ config/gen/platform/darwin/memalign.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,201 +0,0 @@ -/* - * $Id$ - * Copyright (C) 2007-2008, Parrot Foundation. - */ - -/* - -=head1 NAME - -memalign.c - -=head1 DESCRIPTION - -memalign related stuff - -=head2 Functions - -=over 4 - -=cut - -*/ - -#include -#include - -/* - -=item C - -=cut - -*/ - -static unsigned long log2int(unsigned long x) { - return (x < 2) ? 0 : log2int(x >> 1) + 1; -} - -/* - -=item C - -=cut - -*/ - -static unsigned long roundDownPowerOf2(unsigned long x) { - return (1 << log2int(x)); -} - -/* - -=item C - -=cut - -*/ - -static unsigned long roundUpPowerOf2(unsigned long x) -{ - static unsigned long one = 1; - unsigned long log2Int = log2int(x); - - return ((one << log2Int) == x) ? x : (one << (log2Int + 1)); -} - -/* - -=item C - -=cut - -*/ - -static unsigned long roundUpToPageBoundary(unsigned long x) -{ - unsigned long roundedDown = trunc_page(x); - - return (roundedDown == x) ? x : (roundedDown + vm_page_size); -} - -typedef struct _memalign_marker_t { - vm_address_t start; - vm_size_t size; -} memalign_marker_t; - -/* - -=item C - -=cut - -*/ - -void * -Parrot_memalign(size_t align, size_t size) -{ - size_t effectiveAlign = align; - size_t padding = 0; - size_t amountToAllocate = 0; - - if (effectiveAlign < sizeof (void *)) - effectiveAlign = roundUpPowerOf2(sizeof (void *)); - else - effectiveAlign = roundUpPowerOf2(effectiveAlign); - - if (effectiveAlign < sizeof (memalign_marker_t)) - padding = sizeof (memalign_marker_t); - else - padding = effectiveAlign; - - amountToAllocate = roundUpToPageBoundary(size + padding); - - { - vm_address_t p = (vm_address_t)NULL; - kern_return_t status = vm_allocate(mach_task_self(), &p, - amountToAllocate, 1); - - if (status != KERN_SUCCESS) - return NULL; - else { - vm_size_t logEffectiveAlign = log2int(effectiveAlign); - vm_address_t lowestAvaliableAddress = - p + sizeof (memalign_marker_t); - vm_address_t roundedDownAddress = - ((lowestAvaliableAddress >> logEffectiveAlign) - << logEffectiveAlign); - vm_address_t returnAddress = - (roundedDownAddress == lowestAvaliableAddress) - ? lowestAvaliableAddress - : (roundedDownAddress + effectiveAlign); - vm_address_t firstUnneededPage = 0; - - memalign_marker_t *marker = - (memalign_marker_t *)returnAddress - 1; - - /* lowest address used, then round down to vm_page boundary */ - vm_address_t usedPageBase = trunc_page((vm_address_t)marker); - marker->start = usedPageBase; - marker->size = returnAddress + size - usedPageBase; - - if (usedPageBase > p) { - status = vm_deallocate(mach_task_self(), p, usedPageBase - p); - - if (status != KERN_SUCCESS) - fprintf(stderr, "Parrot_memalign(%zx, %zx) failed " - "to deallocate extra header space.\n", - align, size); - } - - firstUnneededPage = roundUpToPageBoundary(returnAddress + size); - - if (firstUnneededPage < p + amountToAllocate) { - status = vm_deallocate(mach_task_self(), firstUnneededPage, - p + amountToAllocate - firstUnneededPage); - - if (status != KERN_SUCCESS) { - fprintf(stderr, "Parrot_memalign(%zx, %zx) failed " - "to deallocate extra footer space.\n", - align, size); - } - } - - return (void *)returnAddress; - } - } -} - -/* - -=item C - -=cut - -*/ - -void -Parrot_free_memalign(void *p) -{ - memalign_marker_t *marker = (memalign_marker_t *)p - 1; - kern_return_t status = vm_deallocate(mach_task_self(), - marker->start, marker->size); - - if (status != KERN_SUCCESS) - fprintf(stderr, "Parrot_free_memalign(%p) failed!\n", p); -} - -/* - -=back - -=cut - -*/ - -/* - * Local variables: - * c-file-style: "parrot" - * End: - * vim: expandtab shiftwidth=4: - */ Index: config/gen/platform/ansi/time.c =================================================================== --- config/gen/platform/ansi/time.c (.../trunk) (revision 47551) +++ config/gen/platform/ansi/time.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2007, Parrot Foundation. + * Copyright (C) 2007-2010, Parrot Foundation. */ /* @@ -27,6 +27,8 @@ =item C +Parrot wrapper around standard library C function, returning an INTVAL. + =cut */ @@ -42,6 +44,9 @@ =item C +Note: We are unable to provide this level of precision under ANSI-C, so we +just fall back to intval time for this. + =cut */ @@ -49,8 +54,6 @@ FLOATVAL Parrot_floatval_time(void) { - /* unable to provide this level of precision under ANSI-C, so just fall - back to intval time for this. */ Parrot_warn(NULL, PARROT_WARNINGS_PLATFORM_FLAG, "Parrot_floatval_time not accurate"); return (FLOATVAL)Parrot_intval_time(); } Index: config/gen/platform/ansi/dl.c =================================================================== --- config/gen/platform/ansi/dl.c (.../trunk) (revision 47551) +++ config/gen/platform/ansi/dl.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2007, Parrot Foundation. + * Copyright (C) 2007-2010, Parrot Foundation. */ /* @@ -11,21 +11,17 @@ =head1 DESCRIPTION -Dynlib stuff. (Currently, just placeholders.) +Parrot functions -- B -- which wrap around standard +library functions for handling dynamic libraries. =head2 Functions =over 4 -=cut +=item C -*/ +Parrot wrapper around C. B -/* - -=item C - =cut */ @@ -42,6 +38,8 @@ =item C +Parrot wrapper around C. B + =cut */ @@ -57,6 +55,8 @@ =item C +Parrot wrapper around C. B + =cut */ @@ -73,6 +73,8 @@ =item C +Parrot wrapper around C. B + =cut */ Index: config/gen/platform/ansi/exec.c =================================================================== --- config/gen/platform/ansi/exec.c (.../trunk) (revision 47551) +++ config/gen/platform/ansi/exec.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2004-2008, Parrot Foundation. + * Copyright (C) 2004-2010, Parrot Foundation. */ /* @@ -25,7 +25,7 @@ =item C -Spawn a subprocess +B Spawn a subprocess. =cut @@ -43,6 +43,8 @@ =item C +B + =cut */ Index: config/gen/platform/openbsd/math.c =================================================================== --- config/gen/platform/openbsd/math.c (.../trunk) (revision 47551) +++ config/gen/platform/openbsd/math.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2006-2007, Parrot Foundation. + * Copyright (C) 2006-2010, Parrot Foundation. */ /* @@ -11,7 +11,7 @@ =head1 DESCRIPTION -math stuff +Mathematical functions. =head2 Functions @@ -37,7 +37,7 @@ =item C -return true if the Numval has a negative sign. +Return true if the Numval has a negative sign. This is mostly for handling the -0.0 case. =cut @@ -65,6 +65,8 @@ =item C +Like C, only taking long double instead of double. + =cut */ Index: config/gen/platform/generic/memalign.c =================================================================== --- config/gen/platform/generic/memalign.c (.../trunk) (revision 47551) +++ config/gen/platform/generic/memalign.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,94 +0,0 @@ -/* - * $Id$ - * Copyright (C) 2004-2006, Parrot Foundation. - */ - -/* - -=head1 NAME - -config/gen/platform/generic/memalign.c - -=head1 DESCRIPTION - -memalign related stuff - -=head2 Functions - -=over 4 - -=cut - -*/ - -#if defined(PARROT_HAS_POSIX_MEMALIGN) -# include - -/* - -=item C - -=cut - -*/ - -void * -Parrot_memalign(size_t align, size_t size) -{ - void *p; - int i = posix_memalign(&p, align, size); - return i == 0 ? p : NULL; -} - -#elif defined(PARROT_HAS_MEMALIGN) - -# if defined(PARROT_HAS_HEADER_MALLOC) -# include -# else -# include -# endif - -/* - -=item C - -=cut - -*/ - -void * -Parrot_memalign(size_t align, size_t size) -{ - return memalign(align, size); -} - -#endif - -/* - -=item C - -=cut - -*/ - -void -Parrot_free_memalign(void *p) -{ - free(p); -} - -/* - -=back - -=cut - -*/ - -/* - * Local variables: - * c-file-style: "parrot" - * End: - * vim: expandtab shiftwidth=4: - */ Index: config/gen/platform/generic/time.c =================================================================== --- config/gen/platform/generic/time.c (.../trunk) (revision 47551) +++ config/gen/platform/generic/time.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2004-2006, Parrot Foundation. + * Copyright (C) 2004-2010, Parrot Foundation. */ /* @@ -11,7 +11,7 @@ =head1 DESCRIPTION -Time stuff +Parrot time-related functions. =head2 Functions @@ -28,6 +28,8 @@ =item C +Parrot wrapper around standard library C function, returning an INTVAL. + =cut */ @@ -43,6 +45,8 @@ =item C +Parrot wrapper around standard library C function, returning a FLOATVAL. + =cut */ @@ -59,6 +63,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ @@ -90,6 +96,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ @@ -105,6 +113,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ @@ -120,6 +130,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ Index: config/gen/platform/generic/dl.c =================================================================== --- config/gen/platform/generic/dl.c (.../trunk) (revision 47551) +++ config/gen/platform/generic/dl.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2004-2006, Parrot Foundation. + * Copyright (C) 2004-2010, Parrot Foundation. */ /* @@ -11,7 +11,7 @@ =head1 DESCRIPTION -Dynlib stuff +Parrot functions which wrap around standard library functions for handling dynamic libraries. =head2 Functions @@ -31,6 +31,9 @@ =item C +Parrot wrapper around C. Loads dynamic library file named by first +argument and returns a handle to it. + =cut */ @@ -50,6 +53,9 @@ =item C +Wrapper around C. System-dependent string that indicates most recent +failure in use of C, C or C. + =cut */ @@ -68,6 +74,9 @@ =item C +Wrapper around C. Takes a handle returned by C and +returns address where symbol is located. + =cut */ @@ -86,6 +95,9 @@ =item C +Wrapper around C. Releases reference to dynamic library specified +by argument. Returns C<0> on success and C<-1> on failure. + =cut */ Index: config/gen/platform/generic/stat.c =================================================================== --- config/gen/platform/generic/stat.c (.../trunk) (revision 47551) +++ config/gen/platform/generic/stat.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2007-2008, Parrot Foundation. + * Copyright (C) 2007-2010, Parrot Foundation. */ /* @@ -26,6 +26,8 @@ =item C +B Returns C. + =cut */ @@ -41,6 +43,8 @@ =item C +B Returns C. + =cut */ @@ -56,6 +60,55 @@ =item C +Stats the file, and returns the information specified by C. C can +be one of: + +=over 4 + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=item * C + +=back + +C and C are not supported and will return C<-1>. + =cut */ @@ -141,6 +194,8 @@ =item C +Returns the stat field given by C of file C. + =cut */ @@ -164,6 +219,8 @@ =item C +Returns the fstat field given by C from file identifier C. + =cut */ @@ -184,6 +241,8 @@ =item C +Currently returns C<-1.0> and has no side effects. + =cut */ @@ -199,6 +258,8 @@ =item C +B Returns C. + =cut */ Index: config/gen/platform/generic/exec.c =================================================================== --- config/gen/platform/generic/exec.c (.../trunk) (revision 47551) +++ config/gen/platform/generic/exec.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2004-2009, Parrot Foundation. + * Copyright (C) 2004-2010, Parrot Foundation. */ /* @@ -11,7 +11,7 @@ =head1 DESCRIPTION -system() stuff +Parrot functions to run operating system commands. =head2 Functions @@ -28,8 +28,8 @@ =item C -Spawn off a subprocess and wait for the damn thing to complete, -returning the return value of the process +Spawn off a subprocess provided in a string. Wait for it to complete, +returning the return value of the process. =cut @@ -72,6 +72,9 @@ =item C +Spawn off a subprocess provided in command-line arguments. Wait for it to +complete, returning the return value of the process. + =cut */ @@ -125,6 +128,14 @@ } /* + +=back + +=cut + +*/ + +/* * Local variables: * c-file-style: "parrot" * End: Index: config/gen/platform/generic/math.c =================================================================== --- config/gen/platform/generic/math.c (.../trunk) (revision 47551) +++ config/gen/platform/generic/math.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2004-2007, Parrot Foundation. + * Copyright (C) 2004-2010, Parrot Foundation. */ /* @@ -11,29 +11,21 @@ =head1 DESCRIPTION -math stuff +Mathematical functions. =head2 Functions =over 4 -=cut - -*/ - -/* - =item C -return true if the Numval has a negative sign. +Return true if the Numval has a negative sign. This is mostly for handling the -0.0 case. =cut */ -/* - */ #if DOUBLE_SIZE == 2 * INT_SIZE extern int Parrot_signbit(double x) @@ -55,6 +47,8 @@ =item C +Like C, only taking long double instead of double. + =cut */ Index: config/gen/platform/solaris/time.c =================================================================== --- config/gen/platform/solaris/time.c (.../trunk) (revision 47551) +++ config/gen/platform/solaris/time.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2004-2006, Parrot Foundation. + * Copyright (C) 2004-2010, Parrot Foundation. */ /* @@ -11,7 +11,7 @@ =head1 DESCRIPTION -Time stuff +Parrot time-related functions. =head2 Functions @@ -28,6 +28,8 @@ =item C +Parrot wrapper around standard library C function, returning an INTVAL. + =cut */ @@ -43,6 +45,8 @@ =item C +Parrot wrapper around standard library C function, returning a FLOATVAL. + =cut */ @@ -59,6 +63,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ @@ -90,6 +96,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ @@ -105,6 +113,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ @@ -120,6 +130,8 @@ =item C +Parrot wrapper around standard library C function. + =cut */ Index: config/gen/platform/solaris/math.c =================================================================== --- config/gen/platform/solaris/math.c (.../trunk) (revision 47551) +++ config/gen/platform/solaris/math.c (.../branches/cfunctionsdocs) (revision 47906) @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2006-2007, Parrot Foundation. + * Copyright (C) 2006-2010, Parrot Foundation. */ /* @@ -11,7 +11,7 @@ =head1 DESCRIPTION -math stuff +Mathematical functions. =head2 Functions @@ -35,7 +35,7 @@ =item C -return true if the Numval has a negative sign. +Return true if the Numval has a negative sign. This is mostly for handling the -0.0 case. =cut @@ -63,6 +63,8 @@ =item C +Like C, only taking long double instead of double. + =cut */ Index: examples/compilers/japhc.c =================================================================== --- examples/compilers/japhc.c (.../trunk) (revision 47551) +++ examples/compilers/japhc.c (.../branches/cfunctionsdocs) (revision 47906) @@ -69,6 +69,8 @@ =item C +Unescape a string. + =cut */