avr-libc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-libc-commit] [2503] Fix most of the doxygen warnings.


From: Joerg Wunsch
Subject: [avr-libc-commit] [2503] Fix most of the doxygen warnings.
Date: Sun, 07 Feb 2016 22:59:49 +0000

Revision: 2503
          http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2503
Author:   joerg_wunsch
Date:     2016-02-07 22:59:47 +0000 (Sun, 07 Feb 2016)
Log Message:
-----------
Fix most of the doxygen warnings.

Unfortunately, doxygen apparently turned out to be unable to pick up
(C-style) function documentation from assembly-language source code.
Thus, all of the pgmspace.h function documentation has been dragged
into <avr/pgmspace.h>.

Modified Paths:
--------------
    trunk/avr-libc/ChangeLog
    trunk/avr-libc/NEWS
    trunk/avr-libc/doc/examples/asmdemo/asmdemo.dox
    trunk/avr-libc/include/avr/boot.h
    trunk/avr-libc/include/avr/fuse.h
    trunk/avr-libc/include/avr/lock.h
    trunk/avr-libc/include/avr/pgmspace.h
    trunk/avr-libc/include/avr/power.h
    trunk/avr-libc/include/avr/sleep.h
    trunk/avr-libc/include/avr/wdt.h
    trunk/avr-libc/include/errno.h
    trunk/avr-libc/include/math.h
    trunk/avr-libc/include/setjmp.h
    trunk/avr-libc/include/stdint.h
    trunk/avr-libc/include/stdio.h
    trunk/avr-libc/include/stdlib.h
    trunk/avr-libc/include/string.h
    trunk/avr-libc/include/time.h
    trunk/avr-libc/libc/pmstring/memchr_P.S
    trunk/avr-libc/libc/pmstring/memcmp_P.S
    trunk/avr-libc/libc/pmstring/memcmp_PF.S
    trunk/avr-libc/libc/pmstring/memcpy_P.S
    trunk/avr-libc/libc/pmstring/memcpy_PF.S
    trunk/avr-libc/libc/pmstring/memrchr_P.S
    trunk/avr-libc/libc/pmstring/strcasecmp_P.S
    trunk/avr-libc/libc/pmstring/strcasecmp_PF.S
    trunk/avr-libc/libc/pmstring/strcat_P.S
    trunk/avr-libc/libc/pmstring/strcat_PF.S
    trunk/avr-libc/libc/pmstring/strchr_P.S
    trunk/avr-libc/libc/pmstring/strchrnul_P.S
    trunk/avr-libc/libc/pmstring/strcmp_P.S
    trunk/avr-libc/libc/pmstring/strcmp_PF.S
    trunk/avr-libc/libc/pmstring/strcpy_P.S
    trunk/avr-libc/libc/pmstring/strcpy_PF.S
    trunk/avr-libc/libc/pmstring/strcspn_P.S
    trunk/avr-libc/libc/pmstring/strlcat_P.S
    trunk/avr-libc/libc/pmstring/strlcat_PF.S
    trunk/avr-libc/libc/pmstring/strlcpy_P.S
    trunk/avr-libc/libc/pmstring/strlcpy_PF.S
    trunk/avr-libc/libc/pmstring/strlen_P.S
    trunk/avr-libc/libc/pmstring/strlen_PF.S
    trunk/avr-libc/libc/pmstring/strncasecmp_P.S
    trunk/avr-libc/libc/pmstring/strncasecmp_PF.S
    trunk/avr-libc/libc/pmstring/strncat_P.S
    trunk/avr-libc/libc/pmstring/strncat_PF.S
    trunk/avr-libc/libc/pmstring/strncmp_P.S
    trunk/avr-libc/libc/pmstring/strncmp_PF.S
    trunk/avr-libc/libc/pmstring/strncpy_P.S
    trunk/avr-libc/libc/pmstring/strncpy_PF.S
    trunk/avr-libc/libc/pmstring/strnlen_P.S
    trunk/avr-libc/libc/pmstring/strnlen_PF.S
    trunk/avr-libc/libc/pmstring/strpbrk_P.S
    trunk/avr-libc/libc/pmstring/strrchr_P.S
    trunk/avr-libc/libc/pmstring/strsep_P.S
    trunk/avr-libc/libc/pmstring/strspn_P.S
    trunk/avr-libc/libc/pmstring/strstr_P.S
    trunk/avr-libc/libc/pmstring/strstr_PF.S
    trunk/avr-libc/libc/pmstring/strtok_P.c
    trunk/avr-libc/libc/pmstring/strtok_rP.S
    trunk/avr-libc/libc/stdlib/atexit.c
    trunk/avr-libc/libc/string/memccpy.S
    trunk/avr-libc/libc/string/memmem.S
    trunk/avr-libc/libc/string/strcasestr.S
    trunk/avr-libc/libc/string/strtok.c

Modified: trunk/avr-libc/ChangeLog
===================================================================
--- trunk/avr-libc/ChangeLog    2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/ChangeLog    2016-02-07 22:59:47 UTC (rev 2503)
@@ -1,3 +1,69 @@
+2016-02-07  Joerg Wunsch <address@hidden>
+
+       Fix most of the doxygen warnings.
+       * doc/examples/asmdemo/asmdemo.dox: (Dito.)
+       * include/avr/boot.h: (Dito.)
+       * include/avr/fuse.h: (Dito.)
+       * include/avr/lock.h: (Dito.)
+       * include/avr/pgmspace.h: (Dito.)
+       * include/avr/power.h: (Dito.)
+       * include/avr/sleep.h: (Dito.)
+       * include/avr/wdt.h: (Dito.)
+       * include/errno.h: (Dito.)
+       * include/math.h: (Dito.)
+       * include/setjmp.h: (Dito.)
+       * include/stdint.h: (Dito.)
+       * include/stdio.h: (Dito.)
+       * include/stdlib.h: (Dito.)
+       * include/string.h: (Dito.)
+       * include/time.h: (Dito.)
+       * libc/pmstring/memchr_P.S: (Dito.)
+       * libc/pmstring/memcmp_P.S: (Dito.)
+       * libc/pmstring/memcmp_PF.S: (Dito.)
+       * libc/pmstring/memcpy_P.S: (Dito.)
+       * libc/pmstring/memcpy_PF.S: (Dito.)
+       * libc/pmstring/memrchr_P.S: (Dito.)
+       * libc/pmstring/strcasecmp_P.S: (Dito.)
+       * libc/pmstring/strcasecmp_PF.S: (Dito.)
+       * libc/pmstring/strcat_P.S: (Dito.)
+       * libc/pmstring/strcat_PF.S: (Dito.)
+       * libc/pmstring/strchr_P.S: (Dito.)
+       * libc/pmstring/strchrnul_P.S: (Dito.)
+       * libc/pmstring/strcmp_P.S: (Dito.)
+       * libc/pmstring/strcmp_PF.S: (Dito.)
+       * libc/pmstring/strcpy_P.S: (Dito.)
+       * libc/pmstring/strcpy_PF.S: (Dito.)
+       * libc/pmstring/strcspn_P.S: (Dito.)
+       * libc/pmstring/strlcat_P.S: (Dito.)
+       * libc/pmstring/strlcat_PF.S: (Dito.)
+       * libc/pmstring/strlcpy_P.S: (Dito.)
+       * libc/pmstring/strlcpy_PF.S: (Dito.)
+       * libc/pmstring/strlen_P.S: (Dito.)
+       * libc/pmstring/strlen_PF.S: (Dito.)
+       * libc/pmstring/strncasecmp_P.S: (Dito.)
+       * libc/pmstring/strncasecmp_PF.S: (Dito.)
+       * libc/pmstring/strncat_P.S: (Dito.)
+       * libc/pmstring/strncat_PF.S: (Dito.)
+       * libc/pmstring/strncmp_P.S: (Dito.)
+       * libc/pmstring/strncmp_PF.S: (Dito.)
+       * libc/pmstring/strncpy_P.S: (Dito.)
+       * libc/pmstring/strncpy_PF.S: (Dito.)
+       * libc/pmstring/strnlen_P.S: (Dito.)
+       * libc/pmstring/strnlen_PF.S: (Dito.)
+       * libc/pmstring/strpbrk_P.S: (Dito.)
+       * libc/pmstring/strrchr_P.S: (Dito.)
+       * libc/pmstring/strsep_P.S: (Dito.)
+       * libc/pmstring/strspn_P.S: (Dito.)
+       * libc/pmstring/strstr_P.S: (Dito.)
+       * libc/pmstring/strstr_PF.S: (Dito.)
+       * libc/pmstring/strtok_P.c: (Dito.)
+       * libc/pmstring/strtok_rP.S: (Dito.)
+       * libc/stdlib/atexit.c: (Dito.)
+       * libc/string/memccpy.S: (Dito.)
+       * libc/string/memmem.S: (Dito.)
+       * libc/string/strcasestr.S: (Dito.)
+       * libc/string/strtok.c: (Dito.)
+
 2016-02-06  Joerg Wunsch <address@hidden>
 
        * doc/api/doxygen.config.in: Update doxygen infrastructur to Doxygen 
1.8.7

Modified: trunk/avr-libc/NEWS
===================================================================
--- trunk/avr-libc/NEWS 2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/NEWS 2016-02-07 22:59:47 UTC (rev 2503)
@@ -52,7 +52,9 @@
 
 * Other changes:
 
+  Overhaul of doxygen documentation.
 
+
 *** Changes in avr-libc-1.8.1:
 
 * Bugs fixed:

Modified: trunk/avr-libc/doc/examples/asmdemo/asmdemo.dox
===================================================================
--- trunk/avr-libc/doc/examples/asmdemo/asmdemo.dox     2016-02-07 09:03:41 UTC 
(rev 2502)
+++ trunk/avr-libc/doc/examples/asmdemo/asmdemo.dox     2016-02-07 22:59:47 UTC 
(rev 2503)
@@ -173,7 +173,7 @@
 passed on to the assembler.
 
 As the C preprocessor strips all C-style comments, preprocessed
-assembly source files can have both, C-style (<tt>/* ... *</tt><tt>/</tt>,
+assembly source files can have both, C-style (<tt>/</tt><tt>* ... 
*</tt><tt>/</tt>,
 <tt>// ...</tt>) as well as assembly-style (<tt>; ...</tt>) comments.
 
 At the top, the IO register definition file <tt>avr/io.h</tt> and the

Modified: trunk/avr-libc/include/avr/boot.h
===================================================================
--- trunk/avr-libc/include/avr/boot.h   2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/avr/boot.h   2016-02-07 22:59:47 UTC (rev 2503)
@@ -137,6 +137,7 @@
 
 #define BOOTLOADER_SECTION    __attribute__ ((section (".bootloader")))
 
+#ifndef __DOXYGEN__
 /* Create common bit definitions. */
 #ifdef ASB
 #define __COMMON_ASB    ASB
@@ -156,6 +157,7 @@
 #define BLB11           4
 #define BLB02           3
 #define BLB01           2
+#endif /* __DOXYGEN__ */
 
 /** \ingroup avr_boot
     \def boot_spm_interrupt_enable()
@@ -193,6 +195,7 @@
 
 #define boot_spm_busy_wait()          do{}while(boot_spm_busy())
 
+#ifndef __DOXYGEN__
 #define __BOOT_PAGE_ERASE         (_BV(__SPM_ENABLE) | _BV(PGERS))
 #define __BOOT_PAGE_WRITE         (_BV(__SPM_ENABLE) | _BV(PGWRT))
 #define __BOOT_PAGE_FILL          _BV(__SPM_ENABLE)
@@ -429,6 +432,7 @@
         : "r0", "r30", "r31"                               \
     );                                                     \
 }))
+#endif /* __DOXYGEN__ */
 
 /*
    Reading lock and fuse bits:
@@ -497,6 +501,9 @@
     __result;                                              \
 }))
 
+#ifndef __DOXYGEN__
+#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD))
+#endif
 /** \ingroup avr_boot
     \def boot_signature_byte_get(address)
 
@@ -508,8 +515,6 @@
     \note The values are MCU type dependent.
 */
 
-#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD))
-
 #define boot_signature_byte_get(addr) \
 (__extension__({                      \
       uint8_t __result;                         \

Modified: trunk/avr-libc/include/avr/fuse.h
===================================================================
--- trunk/avr-libc/include/avr/fuse.h   2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/avr/fuse.h   2016-02-07 22:59:47 UTC (rev 2503)
@@ -220,7 +220,7 @@
 
 */
 
-#ifndef __ASSEMBLER__
+#if !(defined(__ASSEMBLER__) || defined(__DOXYGEN__))
 
 #ifndef FUSEMEM
 #define FUSEMEM  __attribute__((__used__, __section__ (".fuse")))
@@ -269,6 +269,6 @@
 #endif
 
 
-#endif /* !__ASSEMBLER__ */
+#endif /* !(__ASSEMBLER__ || __DOXYGEN__) */
 
 #endif /* _AVR_FUSE_H_ */

Modified: trunk/avr-libc/include/avr/lock.h
===================================================================
--- trunk/avr-libc/include/avr/lock.h   2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/avr/lock.h   2016-02-07 22:59:47 UTC (rev 2503)
@@ -184,7 +184,7 @@
 */
 
 
-#ifndef __ASSEMBLER__
+#if !(defined(__ASSEMBLER__) || defined(__DOXYGEN__))
 
 #ifndef LOCKMEM
 #define LOCKMEM  __attribute__((__used__, __section__ (".lock")))
@@ -194,9 +194,6 @@
 #define LOCKBITS unsigned char __lock LOCKMEM
 #endif
 
-#endif  /* !__ASSEMBLER */
-
-
 /* Lock Bit Modes */
 #if defined(__LOCK_BITS_EXIST)
 #define LB_MODE_1  (0xFF)
@@ -236,4 +233,7 @@
 
 #define LOCKBITS_DEFAULT (0xFF)
 
+#endif  /* !(__ASSEMBLER || __DOXYGEN__) */
+
+
 #endif /* _AVR_LOCK_H_ */

Modified: trunk/avr-libc/include/avr/pgmspace.h
===================================================================
--- trunk/avr-libc/include/avr/pgmspace.h       2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/include/avr/pgmspace.h       2016-02-07 22:59:47 UTC (rev 
2503)
@@ -82,11 +82,14 @@
 #ifndef __PGMSPACE_H_
 #define __PGMSPACE_H_ 1
 
+#ifndef __DOXYGEN__
 #define __need_size_t
+#endif
 #include <inttypes.h>
 #include <stddef.h>
 #include <avr/io.h>
 
+#ifndef __DOXYGEN__
 #ifndef __ATTR_CONST__
 #define __ATTR_CONST__ __attribute__((__const__))
 #endif
@@ -98,6 +101,7 @@
 #ifndef __ATTR_PURE__
 #define __ATTR_PURE__ __attribute__((__pure__))
 #endif
+#endif /* !__DOXYGEN__ */
 
 /**
    \ingroup avr_pgmspace
@@ -131,7 +135,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of a "void" object located in flash ROM.  Does not make much
    sense by itself, but can be used to declare a "void *" object in
@@ -151,7 +155,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of a "char" object located in flash ROM.
 */
@@ -169,7 +173,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "unsigned char" object located in flash ROM.
 */
@@ -187,7 +191,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "int8_t" object located in flash ROM.
 */
@@ -205,7 +209,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "uint8_t" object located in flash ROM.
 */
@@ -223,7 +227,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "int16_t" object located in flash ROM.
 */
@@ -241,7 +245,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "uint16_t" object located in flash ROM.
 */
@@ -259,7 +263,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "int32_t" object located in flash ROM.
 */
@@ -277,7 +281,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "uint32_t" object located in flash ROM.
 */
@@ -295,7 +299,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "int64_t" object located in flash ROM.
 
@@ -316,7 +320,7 @@
 
    The typedef is only visible if the macro __PROG_TYPES_COMPAT__
    has been defined before including <avr/pgmspace.h> (either by a
-   #define directive, or by a -D compiler option.)
+   \c \#define directive, or by a -D compiler option.)
 
    Type of an "uint64_t" object located in flash ROM.
 
@@ -404,6 +408,7 @@
 # define PSTR(s) (__extension__({static const char __c[] PROGMEM = (s); 
&__c[0];}))
 #endif /* DOXYGEN */
 
+#ifndef __DOXYGEN__ /* Internal macros, not documented. */
 #define __LPM_classic__(addr)   \
 (__extension__({                \
     uint16_t __addr16 = (uint16_t)(addr); \
@@ -556,6 +561,8 @@
 #define __LPM_float(addr)   __LPM_float_classic__(addr)
 #endif
 
+#endif  /* !__DOXYGEN__ */
+
 /** \ingroup avr_pgmspace
     \def pgm_read_byte_near(address_short)
     Read a byte from the program space with a 16-bit (near) address. 
@@ -606,7 +613,8 @@
 */
 
 /* The classic functions are needed for ATmega103. */
-
+#ifndef __DOXYGEN__            /* These are internal macros, avoid "is
+                                  not documented" warnings. */
 #define __ELPM_classic__(addr)      \
 (__extension__({                    \
     uint32_t __addr32 = (uint32_t)(addr); \
@@ -883,10 +891,10 @@
     __result;                             \
 }))
 
-/* 
-Check for architectures that implement RAMPD (avrxmega3, avrxmega5, 
+/*
+Check for architectures that implement RAMPD (avrxmega3, avrxmega5,
 avrxmega7) as they need to save/restore RAMPZ for ELPM macros so it does
-not interfere with data accesses. 
+not interfere with data accesses.
 */
 #if defined (__AVR_HAVE_RAMPD__)
 
@@ -915,6 +923,7 @@
 
 #endif  /* __AVR_HAVE_RAMPD__ */
 
+#endif /* !__DOXYGEN__ */
 
 /** \ingroup avr_pgmspace
     \def pgm_read_byte_far(address_long)
@@ -1008,7 +1017,8 @@
 
 #define pgm_read_ptr(address_short)     pgm_read_ptr_near(address_short)
 
-/* pgm_get_far_address() macro
+/** \ingroup avr_pgmspace
+    \def pgm_get_far_address(var)
 
    This macro facilitates the obtention of a 32 bit "far" pointer (only 24 bits
    used) to data even passed the 64KB limit for the 16 bit ordinary pointer. It
@@ -1036,9 +1046,8 @@
      architecture requires non overlapping VMA areas for the multiple address 
spaces
      in the processor: Flash ROM, RAM, and EEPROM. Typical offset for this are
      0x00000000, 0x00800xx0, and 0x00810000 respectively, derived from the 
linker
-        script used and linker options. The value returned can be seen then as 
a
+     script used and linker options. The value returned can be seen then as a
      universal pointer.
-
 */
 
 #define pgm_get_far_address(var)                          \
@@ -1061,61 +1070,647 @@
 
 
 
+/** \ingroup avr_pgmspace
+    \fn const void * memchr_P(const void *s, int val, size_t len)
+    \brief Scan flash memory for a character.
+
+    The memchr_P() function scans the first \p len bytes of the flash
+    memory area pointed to by \p s for the character \p val.  The first
+    byte to match \p val (interpreted as an unsigned character) stops
+    the operation.
+
+    \return The memchr_P() function returns a pointer to the matching
+    byte or \c NULL if the character does not occur in the given memory
+    area.      */
 extern const void * memchr_P(const void *, int __val, size_t __len) 
__ATTR_CONST__;
+
+/** \ingroup avr_pgmspace
+    \fn int memcmp_P(const void *s1, const void *s2, size_t len)
+    \brief Compare memory areas
+
+    The memcmp_P() function compares the first \p len bytes of the memory
+    areas \p s1 and flash \p s2. The comparision is performed using unsigned
+    char operations.
+
+    \returns The memcmp_P() function returns an integer less than, equal
+    to, or greater than zero if the first \p len bytes of \p s1 is found,
+    respectively, to be less than, to match, or be greater than the first
+    \p len bytes of \p s2.     */
 extern int memcmp_P(const void *, const void *, size_t) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn void *memccpy_P (void *dest, const void *src, int val, size_t len)
+
+    This function is similar to memccpy() except that \p src is pointer
+    to a string in program space.      */
 extern void *memccpy_P(void *, const void *, int __val, size_t);
+
+/** \ingroup avr_pgmspace
+    \fn void *memcpy_P(void *dest, const void *src, size_t n)
+
+    The memcpy_P() function is similar to memcpy(), except the src string
+    resides in program space.
+
+    \returns The memcpy_P() function returns a pointer to dest.  */
 extern void *memcpy_P(void *, const void *, size_t);
+
+/** \ingroup avr_pgmspace
+    \fn void *memmem_P(const void *s1, size_t len1, const void *s2, size_t 
len2)
+
+    The memmem_P() function is similar to memmem() except that \p s2 is
+    pointer to a string in program space.      */
 extern void *memmem_P(const void *, size_t, const void *, size_t) 
__ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn const void +memrchr_P(const void *src, int val, size_t len)
+
+    The memrchr_P() function is like the memchr_P() function, except
+    that it searches backwards from the end of the \p len bytes pointed
+    to by \p src instead of forwards from the front. (Glibc, GNU extension.)
+
+    \return The memrchr_P() function returns a pointer to the matching
+    byte or \c NULL if the character does not occur in the given memory
+    area.      */
 extern const void * memrchr_P(const void *, int __val, size_t __len) 
__ATTR_CONST__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strcat_P(char *dest, const char *src)
+
+    The strcat_P() function is similar to strcat() except that the \e src
+    string must be located in program space (flash).
+
+    \returns The strcat() function returns a pointer to the resulting string
+    \e dest. */
 extern char *strcat_P(char *, const char *);
+
+/** \ingroup avr_pgmspace
+    \fn const char *strchr_P(const char *s, int val)
+    \brief Locate character in program space string.
+
+    The strchr_P() function locates the first occurrence of \p val
+    (converted to a char) in the string pointed to by \p s in program
+    space. The terminating null character is considered to be part of
+    the string.
+
+    The strchr_P() function is similar to strchr() except that \p s is
+    pointer to a string in program space.
+
+    \returns The strchr_P() function returns a pointer to the matched
+    character or \c NULL if the character is not found. */
 extern const char * strchr_P(const char *, int __val) __ATTR_CONST__;
+
+/** \ingroup avr_pgmspace
+    \fn const char *strchrnul_P(const char *s, int c)
+
+    The strchrnul_P() function is like strchr_P() except that if \p c is
+    not found in \p s, then it returns a pointer to the null byte at the
+    end of \p s, rather than \c NULL. (Glibc, GNU extension.)
+
+    \return The strchrnul_P() function returns a pointer to the matched
+    character, or a pointer to the null byte at the end of \p s (i.e.,
+    \c s+strlen(s)) if the character is not found.     */
 extern const char * strchrnul_P(const char *, int __val) __ATTR_CONST__;
+
+/** \ingroup avr_pgmspace
+    \fn int strcmp_P(const char *s1, const char *s2)
+
+    The strcmp_P() function is similar to strcmp() except that \p s2 is
+    pointer to a string in program space.
+
+    \returns The strcmp_P() function returns an integer less than, equal
+    to, or greater than zero if \p s1 is found, respectively, to be less
+    than, to match, or be greater than \p s2. A consequence of the
+    ordering used by strcmp_P() is that if \p s1 is an initial substring
+    of \p s2, then \p s1 is considered to be "less than" \p s2. */
 extern int strcmp_P(const char *, const char *) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strcpy_P(char *dest, const char *src)
+
+    The strcpy_P() function is similar to strcpy() except that src is a
+    pointer to a string in program space.
+
+    \returns The strcpy_P() function returns a pointer to the destination
+    string dest. */
 extern char *strcpy_P(char *, const char *);
+
+/** \ingroup avr_pgmspace
+    \fn int strcasecmp_P(const char *s1, const char *s2)
+    \brief Compare two strings ignoring case.
+
+    The strcasecmp_P() function compares the two strings \p s1 and \p s2,
+    ignoring the case of the characters.
+
+    \param s1 A pointer to a string in the devices SRAM.
+    \param s2 A pointer to a string in the devices Flash.
+
+    \returns The strcasecmp_P() function returns an integer less than,
+    equal to, or greater than zero if \p s1 is found, respectively, to
+    be less than, to match, or be greater than \p s2. A consequence of
+    the ordering used by strcasecmp_P() is that if \p s1 is an initial
+    substring of \p s2, then \p s1 is considered to be "less than" \p s2. */
 extern int strcasecmp_P(const char *, const char *) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strcasestr_P(const char *s1, const char *s2)
+
+    This funtion is similar to strcasestr() except that \p s2 is pointer
+    to a string in program space.      */
 extern char *strcasestr_P(const char *, const char *) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn size_t strcspn_P(const char *s, const char *reject)
+
+    The strcspn_P() function calculates the length of the initial segment
+    of \p s which consists entirely of characters not in \p reject. This
+    function is similar to strcspn() except that \p reject is a pointer
+    to a string in program space.
+
+    \return The strcspn_P() function returns the number of characters in
+    the initial segment of \p s which are not in the string \p reject.
+    The terminating zero is not considered as a part of string.        */
 extern size_t strcspn_P(const char *__s, const char * __reject) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn size_t strlcat_P(char *dst, const char *src, size_t siz)
+    \brief Concatenate two strings.
+
+    The strlcat_P() function is similar to strlcat(), except that the \p src
+    string must be located in program space (flash).
+
+    Appends \p src to string \p dst of size \p siz (unlike strncat(),
+    \p siz is the full size of \p dst, not space left).  At most \p siz-1
+    characters will be copied.  Always NULL terminates (unless \p siz <=
+    \p strlen(dst)).
+
+    \returns The strlcat_P() function returns strlen(src) + MIN(siz,
+    strlen(initial dst)).  If retval >= siz, truncation occurred.      */
 extern size_t strlcat_P (char *, const char *, size_t );
+
+/** \ingroup avr_pgmspace
+    \fn size_t strlcpy_P(char *dst, const char *src, size_t siz)
+    \brief Copy a string from progmem to RAM.
+
+    Copy \p src to string \p dst of size \p siz.  At most \p siz-1
+    characters will be copied.  Always NULL terminates (unless \p siz == 0).
+    The strlcpy_P() function is similar to strlcpy() except that the
+    \p src is pointer to a string in memory space.
+
+    \returns The strlcpy_P() function returns strlen(src). If
+    retval >= siz, truncation occurred.  */
 extern size_t strlcpy_P (char *, const char *, size_t );
-extern size_t __strlen_P(const char *) __ATTR_CONST__;  /* program memory 
can't change */
+
+/** \ingroup avr_pgmspace
+    \fn size_t strnlen_P(const char *src, size_t len)
+    \brief Determine the length of a fixed-size string.
+
+    The strnlen_P() function is similar to strnlen(), except that \c src is a
+    pointer to a string in program space.
+
+    \returns The strnlen_P function returns strlen_P(src), if that is less than
+    \c len, or \c len if there is no '\\0' character among the first \c len
+    characters pointed to by \c src. */
 extern size_t strnlen_P(const char *, size_t) __ATTR_CONST__; /* program 
memory can't change */
+
+/** \ingroup avr_pgmspace
+    \fn int strncmp_P(const char *s1, const char *s2, size_t n)
+
+    The strncmp_P() function is similar to strcmp_P() except it only compares
+    the first (at most) n characters of s1 and s2.
+
+    \returns The strncmp_P() function returns an integer less than, equal to,
+    or greater than zero if s1 (or the first n bytes thereof) is found,
+    respectively, to be less than, to match, or be greater than s2.  */
 extern int strncmp_P(const char *, const char *, size_t) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn int strncasecmp_P(const char *s1, const char *s2, size_t n)
+    \brief Compare two strings ignoring case.
+
+    The strncasecmp_P() function is similar to strcasecmp_P(), except it
+    only compares the first \p n characters of \p s1.
+
+    \param s1 A pointer to a string in the devices SRAM.
+    \param s2 A pointer to a string in the devices Flash.
+    \param n The maximum number of bytes to compare.
+
+    \returns The strncasecmp_P() function returns an integer less than,
+    equal to, or greater than zero if \p s1 (or the first \p n bytes
+    thereof) is found, respectively, to be less than, to match, or be
+    greater than \p s2. A consequence of the ordering used by
+    strncasecmp_P() is that if \p s1 is an initial substring of \p s2,
+    then \p s1 is considered to be "less than" \p s2.  */
 extern int strncasecmp_P(const char *, const char *, size_t) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strncat_P(char *dest, const char *src, size_t len)
+    \brief Concatenate two strings.
+
+    The strncat_P() function is similar to strncat(), except that the \e src
+    string must be located in program space (flash).
+
+    \returns The strncat_P() function returns a pointer to the resulting string
+    dest.  */
 extern char *strncat_P(char *, const char *, size_t);
+
+/** \ingroup avr_pgmspace
+    \fn char *strncpy_P(char *dest, const char *src, size_t n)
+
+    The strncpy_P() function is similar to strcpy_P() except that not more
+    than n bytes of src are copied.  Thus, if there is no null byte among the
+    first n bytes of src, the result will not be null-terminated.
+
+    In the case where the length of src is less than that of n, the remainder
+    of dest will be padded with nulls.
+
+    \returns The strncpy_P() function returns a pointer to the destination
+    string dest.  */
 extern char *strncpy_P(char *, const char *, size_t);
+
+/** \ingroup avr_pgmspace
+    \fn char *strpbrk_P(const char *s, const char *accept)
+
+    The strpbrk_P() function locates the first occurrence in the string
+    \p s of any of the characters in the flash string \p accept. This
+    function is similar to strpbrk() except that \p accept is a pointer
+    to a string in program space.
+
+    \return  The strpbrk_P() function returns a pointer to the character
+    in \p s that matches one of the characters in \p accept, or \c NULL
+    if no such character is found. The terminating zero is not considered
+    as a part of string: if one or both args are empty, the result will
+    \c NULL. */
 extern char *strpbrk_P(const char *__s, const char * __accept) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn const char *strrchr_P(const char *s, int val)
+    \brief Locate character in string.
+
+    The strrchr_P() function returns a pointer to the last occurrence of
+    the character \p val in the flash string \p s.
+
+    \return The strrchr_P() function returns a pointer to the matched
+    character or \c NULL if the character is not found. */
 extern const char * strrchr_P(const char *, int __val) __ATTR_CONST__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strsep_P(char **sp, const char *delim)
+    \brief Parse a string into tokens.
+
+    The strsep_P() function locates, in the string referenced by \p *sp,
+    the first occurrence of any character in the string \p delim (or the
+    terminating '\\0' character) and replaces it with a '\\0'.  The
+    location of the next character after the delimiter character (or \c
+    NULL, if the end of the string was reached) is stored in \p *sp. An
+    ``empty'' field, i.e. one caused by two adjacent delimiter
+    characters, can be detected by comparing the location referenced by
+    the pointer returned in \p *sp to '\\0'. This function is similar to
+    strsep() except that \p delim is a pointer to a string in program
+    space.
+
+    \return The strsep_P() function returns a pointer to the original
+    value of \p *sp. If \p *sp is initially \c NULL, strsep_P() returns
+    \c NULL. */
 extern char *strsep_P(char **__sp, const char * __delim);
+
+/** \ingroup avr_pgmspace
+    \fn size_t strspn_P(const char *s, const char *accept)
+
+    The strspn_P() function calculates the length of the initial segment
+    of \p s which consists entirely of characters in \p accept. This
+    function is similar to strspn() except that \p accept is a pointer
+    to a string in program space.
+
+    \return  The strspn_P() function returns the number of characters in
+    the initial segment of \p s which consist only of characters from \p
+    accept. The terminating zero is not considered as a part of string.        
*/
 extern size_t strspn_P(const char *__s, const char * __accept) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strstr_P(const char *s1, const char *s2)
+    \brief Locate a substring.
+
+    The strstr_P() function finds the first occurrence of the substring
+    \p s2 in the string \p s1.  The terminating '\\0' characters are not
+    compared. The strstr_P() function is similar to strstr() except that
+    \p s2 is pointer to a string in program space.
+
+    \returns The strstr_P() function returns a pointer to the beginning
+    of the substring, or NULL if the substring is not found. If \p s2
+    points to a string of zero length, the function returns \p s1. */
 extern char *strstr_P(const char *, const char *) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strtok_P(char *s, const char * delim)
+    \brief Parses the string into tokens.
+
+    strtok_P() parses the string \p s into tokens. The first call to
+    strtok_P() should have \p s as its first argument. Subsequent calls
+    should have the first argument set to NULL. If a token ends with a
+    delimiter, this delimiting character is overwritten with a '\\0' and a
+    pointer to the next character is saved for the next call to strtok_P().
+    The delimiter string \p delim may be different for each call.
+
+    The strtok_P() function is similar to strtok() except that \p delim
+    is pointer to a string in program space.
+
+    \returns The strtok_P() function returns a pointer to the next token or
+    NULL when no more tokens are found.
+
+    \note strtok_P() is NOT reentrant. For a reentrant version of this
+    function see strtok_rP().
+ */
 extern char *strtok_P(char *__s, const char * __delim);
+
+/** \ingroup avr_pgmspace
+    \fn char *strtok_rP (char *string, const char *delim, char **last)
+    \brief Parses string into tokens.
+
+    The strtok_rP() function parses \p string into tokens. The first call to
+    strtok_rP() should have string as its first argument. Subsequent calls
+    should have the first argument set to NULL. If a token ends with a
+    delimiter, this delimiting character is overwritten with a '\\0' and a
+    pointer to the next character is saved for the next call to strtok_rP().
+    The delimiter string \p delim may be different for each call. \p last is
+    a user allocated char* pointer. It must be the same while parsing the
+    same string. strtok_rP() is a reentrant version of strtok_P().
+
+    The strtok_rP() function is similar to strtok_r() except that \p delim
+    is pointer to a string in program space.
+
+    \returns The strtok_rP() function returns a pointer to the next token or
+    NULL when no more tokens are found. */
 extern char *strtok_rP(char *__s, const char * __delim, char **__last);
 
-extern size_t strlen_PF (uint_farptr_t src) __ATTR_CONST__; /* program memory 
can't change */
-extern size_t strnlen_PF (uint_farptr_t src, size_t len) __ATTR_CONST__; /* 
program memory can't change */
-extern void *memcpy_PF (void *dest, uint_farptr_t src, size_t len);
-extern char *strcpy_PF (char *dest, uint_farptr_t src);
-extern char *strncpy_PF (char *dest, uint_farptr_t src, size_t len);
-extern char *strcat_PF (char *dest, uint_farptr_t src);
-extern size_t strlcat_PF (char *dst, uint_farptr_t src, size_t siz);
-extern char *strncat_PF (char *dest, uint_farptr_t src, size_t len);
-extern int strcmp_PF (const char *s1, uint_farptr_t s2) __ATTR_PURE__;
-extern int strncmp_PF (const char *s1, uint_farptr_t s2, size_t n) 
__ATTR_PURE__;
-extern int strcasecmp_PF (const char *s1, uint_farptr_t s2) __ATTR_PURE__;
-extern int strncasecmp_PF (const char *s1, uint_farptr_t s2, size_t n) 
__ATTR_PURE__;
-extern char *strstr_PF (const char *s1, uint_farptr_t s2);
-extern size_t strlcpy_PF (char *dst, uint_farptr_t src, size_t siz);
+/** \ingroup avr_pgmspace
+    \fn size_t strlen_PF(uint_farptr_t s)
+    \brief Obtain the length of a string
+
+    The strlen_PF() function is similar to strlen(), except that \e s is a
+    far pointer to a string in program space.
+
+    \param s A far pointer to the string in flash
+
+    \returns The strlen_PF() function returns the number of characters in
+    \e s. The contents of RAMPZ SFR are undefined when the function returns. */
+extern size_t strlen_PF(uint_farptr_t src) __ATTR_CONST__; /* program memory 
can't change */
+
+/** \ingroup avr_pgmspace
+    \fn size_t strnlen_PF(uint_farptr_t s, size_t len)
+    \brief Determine the length of a fixed-size string
+
+    The strnlen_PF() function is similar to strnlen(), except that \e s is a
+    far pointer to a string in program space.
+
+    \param s A far pointer to the string in Flash
+    \param len The maximum number of length to return
+
+    \returns The strnlen_PF function returns strlen_P(\e s), if that is less
+    than \e len, or \e len if there is no '\\0' character among the first \e
+    len characters pointed to by \e s. The contents of RAMPZ SFR are
+    undefined when the function returns. */
+extern size_t strnlen_PF(uint_farptr_t src, size_t len) __ATTR_CONST__; /* 
program memory can't change */
+
+/** \ingroup avr_pgmspace
+    \fn void *memcpy_PF(void *dest, uint_farptr_t src, size_t n)
+    \brief Copy a memory block from flash to SRAM
+
+    The memcpy_PF() function is similar to memcpy(), except the data
+    is copied from the program space and is addressed using a far pointer.
+
+    \param dest A pointer to the destination buffer
+    \param src A far pointer to the origin of data in flash memory
+    \param n The number of bytes to be copied
+
+    \returns The memcpy_PF() function returns a pointer to \e dst. The contents
+    of RAMPZ SFR are undefined when the function returns. */
+extern void *memcpy_PF(void *dest, uint_farptr_t src, size_t len);
+
+/** \ingroup avr_pgmspace
+    \fn char *strcpy_PF(char *dst, uint_farptr_t src)
+    \brief Duplicate a string
+
+    The strcpy_PF() function is similar to strcpy() except that \e src is a far
+    pointer to a string in program space.
+
+    \param dst A pointer to the destination string in SRAM
+    \param src A far pointer to the source string in Flash
+
+    \returns The strcpy_PF() function returns a pointer to the destination
+    string \e dst. The contents of RAMPZ SFR are undefined when the funcion
+    returns. */
+extern char *strcpy_PF(char *dest, uint_farptr_t src);
+
+/** \ingroup avr_pgmspace
+    \fn char *strncpy_PF(char *dst, uint_farptr_t src, size_t n)
+    \brief Duplicate a string until a limited length
+
+    The strncpy_PF() function is similar to strcpy_PF() except that not more
+    than \e n bytes of \e src are copied.  Thus, if there is no null byte among
+    the first \e n bytes of \e src, the result will not be null-terminated.
+
+    In the case where the length of \e src is less than that of \e n, the
+    remainder of \e dst will be padded with nulls.
+
+    \param dst A pointer to the destination string in SRAM
+    \param src A far pointer to the source string in Flash
+    \param n The maximum number of bytes to copy
+
+    \returns The strncpy_PF() function returns a pointer to the destination
+    string \e dst. The contents of RAMPZ SFR are undefined when the function
+    returns. */
+extern char *strncpy_PF(char *dest, uint_farptr_t src, size_t len);
+
+/** \ingroup avr_pgmspace
+    \fn char *strcat_PF(char *dst, uint_farptr_t src)
+    \brief Concatenates two strings
+
+    The strcat_PF() function is similar to strcat() except that the \e src
+    string must be located in program space (flash) and is addressed using
+    a far pointer
+
+    \param dst A pointer to the destination string in SRAM
+    \param src A far pointer to the string to be appended in Flash
+
+    \returns The strcat_PF() function returns a pointer to the resulting
+    string \e dst. The contents of RAMPZ SFR are undefined when the function
+    returns */
+extern char *strcat_PF(char *dest, uint_farptr_t src);
+
+/** \ingroup avr_pgmspace
+    \fn size_t strlcat_PF(char *dst, uint_farptr_t src, size_t n)
+    \brief Concatenate two strings
+
+    The strlcat_PF() function is similar to strlcat(), except that the \e src
+    string must be located in program space (flash) and is addressed using
+    a far pointer.
+
+    Appends src to string dst of size \e n (unlike strncat(), \e n is the
+    full size of \e dst, not space left).  At most \e n-1 characters
+    will be copied.  Always NULL terminates (unless \e n <= strlen(\e dst)).
+
+    \param dst A pointer to the destination string in SRAM
+    \param src A far pointer to the source string in Flash
+    \param n The total number of bytes allocated to the destination string
+
+    \returns The strlcat_PF() function returns strlen(\e src) + MIN(\e n,
+    strlen(initial \e dst)).  If retval >= \e n, truncation occurred. The
+    contents of RAMPZ SFR are undefined when the funcion returns. */
+extern size_t strlcat_PF(char *dst, uint_farptr_t src, size_t siz);
+
+/** \ingroup avr_pgmspace
+    \fn char *strncat_PF(char *dst, uint_farptr_t src, size_t n)
+    \brief Concatenate two strings
+
+    The strncat_PF() function is similar to strncat(), except that the \e src
+    string must be located in program space (flash) and is addressed using a
+    far pointer.
+
+    \param dst A pointer to the destination string in SRAM
+    \param src A far pointer to the source string in Flash
+    \param n The maximum number of bytes to append
+
+    \returns The strncat_PF() function returns a pointer to the resulting
+    string \e dst. The contents of RAMPZ SFR are undefined when the function
+    returns. */
+extern char *strncat_PF(char *dest, uint_farptr_t src, size_t len);
+
+/** \ingroup avr_pgmspace
+    \fn int strcmp_PF(const char *s1, uint_farptr_t s2)
+    \brief Compares two strings
+
+    The strcmp_PF() function is similar to strcmp() except that \e s2 is a far
+    pointer to a string in program space.
+
+    \param s1 A pointer to the first string in SRAM
+    \param s2 A far pointer to the second string in Flash
+
+    \returns The strcmp_PF() function returns an integer less than, equal to,
+    or greater than zero if \e s1 is found, respectively, to be less than, to
+    match, or be greater than \e s2. The contents of RAMPZ SFR are undefined
+    when the function returns. */
+extern int strcmp_PF(const char *s1, uint_farptr_t s2) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn int strncmp_PF(const char *s1, uint_farptr_t s2, size_t n)
+    \brief Compare two strings with limited length
+
+    The strncmp_PF() function is similar to strcmp_PF() except it only
+    compares the first (at most) \e n characters of \e s1 and \e s2.
+
+    \param s1 A pointer to the first string in SRAM
+    \param s2 A far pointer to the second string in Flash
+    \param n The maximum number of bytes to compare
+
+    \returns The strncmp_PF() function returns an integer less than, equal
+    to, or greater than zero if \e s1 (or the first \e n bytes thereof) is 
found,
+    respectively, to be less than, to match, or be greater than \e s2. The
+    contents of RAMPZ SFR are undefined when the function returns. */
+extern int strncmp_PF(const char *s1, uint_farptr_t s2, size_t n) 
__ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn int strcasecmp_PF(const char *s1, uint_farptr_t s2)
+    \brief Compare two strings ignoring case
+
+    The strcasecmp_PF() function compares the two strings \e s1 and \e s2, 
ignoring
+    the case of the characters.
+
+    \param s1 A pointer to the first string in SRAM
+    \param s2 A far pointer to the second string in Flash
+
+    \returns The strcasecmp_PF() function returns an integer less than, equal
+    to, or greater than zero if \e s1 is found, respectively, to be less than, 
to
+    match, or be greater than \e s2. The contents of RAMPZ SFR are undefined
+    when the function returns. */
+extern int strcasecmp_PF(const char *s1, uint_farptr_t s2) __ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n)
+    \brief Compare two strings ignoring case
+
+    The strncasecmp_PF() function is similar to strcasecmp_PF(), except it
+    only compares the first \e n characters of \e s1 and the string in flash is
+    addressed using a far pointer.
+
+    \param s1 A pointer to a string in SRAM
+    \param s2 A far pointer to a string in Flash
+    \param n The maximum number of bytes to compare
+
+    \returns The strncasecmp_PF() function returns an integer less than, equal
+    to, or greater than zero if \e s1 (or the first \e n bytes thereof) is 
found,
+    respectively, to be less than, to match, or be greater than \e s2. The
+    contents of RAMPZ SFR are undefined when the function returns.  */
+extern int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n) 
__ATTR_PURE__;
+
+/** \ingroup avr_pgmspace
+    \fn char *strstr_PF(const char *s1, uint_farptr_t s2)
+    \brief Locate a substring.
+
+    The strstr_PF() function finds the first occurrence of the substring \c s2
+    in the string \c s1.  The terminating '\\0' characters are not
+    compared.
+    The strstr_PF() function is similar to strstr() except that \c s2 is a
+    far pointer to a string in program space.
+
+    \returns The strstr_PF() function returns a pointer to the beginning of the
+    substring, or NULL if the substring is not found.
+    If \c s2 points to a string of zero length, the function returns \c s1. The
+    contents of RAMPZ SFR are undefined when the function returns. */
+extern char *strstr_PF(const char *s1, uint_farptr_t s2);
+
+/** \ingroup avr_pgmspace
+    \fn size_t strlcpy_PF(char *dst, uint_farptr_t src, size_t siz)
+    \brief Copy a string from progmem to RAM.
+
+    Copy src to string dst of size siz.  At most siz-1 characters will be
+    copied. Always NULL terminates (unless siz == 0).
+
+    \returns The strlcpy_PF() function returns strlen(src). If retval >= siz,
+    truncation occurred.  The contents of RAMPZ SFR are undefined when the
+    function returns. */
+extern size_t strlcpy_PF(char *dst, uint_farptr_t src, size_t siz);
+
+/** \ingroup avr_pgmspace
+    \fn int memcmp_PF(const void *s1, uint_farptr_t s2, size_t len)
+    \brief Compare memory areas
+
+    The memcmp_PF() function compares the first \p len bytes of the memory
+    areas \p s1 and flash \p s2. The comparision is performed using unsigned
+    char operations. It is an equivalent of memcmp_P() function, except
+    that it is capable working on all FLASH including the exteded area
+    above 64kB.
+
+    \returns The memcmp_PF() function returns an integer less than, equal
+    to, or greater than zero if the first \p len bytes of \p s1 is found,
+    respectively, to be less than, to match, or be greater than the first
+    \p len bytes of \p s2.  */
 extern int memcmp_PF(const void *, uint_farptr_t, size_t) __ATTR_PURE__;
 
+#ifdef __DOXYGEN__
+/** \ingroup avr_pgmspace
+    \fn size_t strlen_P(const char *src)
 
+    The strlen_P() function is similar to strlen(), except that src is a
+    pointer to a string in program space.
+
+    \returns The strlen_P() function returns the number of characters in src.
+
+    \note strlen_P() is implemented as an inline function in the avr/pgmspace.h
+    header file, which will check if the length of the string is a constant
+    and known at compile time. If it is not known at compile time, the macro
+    will issue a call to __strlen_P() which will then calculate the length
+    of the string as normal.
+*/
+static inline size_t strlen_P(const char * s);
+#else
+extern size_t __strlen_P(const char *) __ATTR_CONST__;  /* internal helper 
function */
 __attribute__((__always_inline__)) static __inline__ size_t strlen_P(const 
char * s);
 static __inline__ size_t strlen_P(const char *s) {
   return __builtin_constant_p(__builtin_strlen(s))
      ? __builtin_strlen(s) : __strlen_P(s);
-} 
+}
+#endif
 
-
-
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/avr-libc/include/avr/power.h
===================================================================
--- trunk/avr-libc/include/avr/power.h  2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/avr/power.h  2016-02-07 22:59:47 UTC (rev 2503)
@@ -1242,6 +1242,7 @@
 #endif
 }
 
+#ifndef __DOXYGEN__
 #ifndef power_all_enable
 #define power_all_enable() __power_all_enable()
 #endif
@@ -1249,6 +1250,7 @@
 #ifndef power_all_disable
 #define power_all_disable() __power_all_disable()
 #endif
+#endif /* !__DOXYGEN__ */
 
 
 #if defined(__AVR_AT90CAN32__) \
@@ -1407,6 +1409,7 @@
 XTAL Divide Control Register.
 
 */
+#ifndef __DOXYGEN__
 typedef enum
 {
     clock_div_1 = 0,
@@ -1429,11 +1432,12 @@
 #endif
 } clock_div_t;
 
-
 static __inline__ void clock_prescale_set(clock_div_t) 
__attribute__((__always_inline__));
+#endif /* !__DOXYGEN__ */
 
-/** \addtogroup avr_power
-\code clock_prescale_set(x) \endcode
+/**
+   \ingroup avr_power
+   \fn clock_prescale_set(clock_div_t x)
 
 Set the clock prescaler register select bits, selecting a system clock
 division setting. This function is inlined, even if compiler
@@ -1461,7 +1465,7 @@
 }
 
 /** \addtogroup avr_power
-\code clock_prescale_get() \endcode
+\def clock_prescale_get()
 Gets and returns the clock prescaler register setting. The return type is \c 
clock_div_t.
 
 \note For device with XTAL Divide Control Register (XDIV), return can actually

Modified: trunk/avr-libc/include/avr/sleep.h
===================================================================
--- trunk/avr-libc/include/avr/sleep.h  2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/avr/sleep.h  2016-02-07 22:59:47 UTC (rev 2503)
@@ -151,7 +151,7 @@
     #define _SLEEP_CONTROL_REG  MCUR
     #define _SLEEP_ENABLE_MASK  _BV(SE)
 
-#else
+#elif !defined(__DOXYGEN__)
 
     #define _SLEEP_CONTROL_REG  MCUCR
     #define _SLEEP_ENABLE_MASK  _BV(SE)
@@ -302,6 +302,10 @@
 
 #if defined(__DOXYGEN__)
 
+/** \ingroup avr_sleep
+
+    Put the device into sleep mode, taking care of setting
+    the SE bit before, and clearing it afterwards. */
 extern void sleep_mode (void);
 
 #else
@@ -318,6 +322,11 @@
 
 #if defined(__DOXYGEN__)
 
+/** \ingroup avr_sleep
+
+    Disable BOD before going to sleep.
+    Not available on all devices.
+*/
 extern void sleep_bod_disable (void);
 
 #else

Modified: trunk/avr-libc/include/avr/wdt.h
===================================================================
--- trunk/avr-libc/include/avr/wdt.h    2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/avr/wdt.h    2016-02-07 22:59:47 UTC (rev 2503)
@@ -98,6 +98,7 @@
 
 #define wdt_reset() __asm__ __volatile__ ("wdr")
 
+#ifndef __DOXYGEN__
 
 #if defined(WDP3)
 # define _WD_PS3_MASK       _BV(WDP3)
@@ -119,7 +120,9 @@
 #define _WD_CHANGE_BIT      WDCE
 #endif
 
+#endif /* !__DOXYGEN__ */
 
+
 /**
    \ingroup avr_watchdog
    Enable the watchdog timer, configuring it for expiry after

Modified: trunk/avr-libc/include/errno.h
===================================================================
--- trunk/avr-libc/include/errno.h      2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/errno.h      2016-02-07 22:59:47 UTC (rev 2503)
@@ -41,17 +41,24 @@
     Some functions in the library set the global variable \c errno when an
     error occurs. The file, \c <errno.h>, provides symbolic names for various
     error codes. 
+ */
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** \ingroup avr_errno
+    \brief Error code for last error encountered by library
+
+    The variable \c errno holds the last error code encountered by
+    a library function.  This variable must be cleared by the
+    user prior to calling a library function.
+
     \warning The \c errno global variable is not safe to use in a threaded or
     multi-task system. A race condition can occur if a task is interrupted
     between the call which sets \c error and when the task examines \c
     errno. If another task changes \c errno during this time, the result will
     be incorrect for the interrupted task. */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 extern int errno;
 
 #ifdef __cplusplus
@@ -70,6 +77,8 @@
     Range error. */
 #define ERANGE     34
 
+#ifndef __DOXYGEN__
+
 /* ((((('E'-64)*26+('N'-64))*26+('O'-64))*26+('S'-64))*26+('Y'-64))*26+'S'-64 
*/
 #define ENOSYS ((int)(66081697 & 0x7fff))
 
@@ -140,4 +149,6 @@
 /* ((((('E'-64)*26+('N'-64))*26+('O'-64))*26+('E'-64))*26+('R'-64))*26+'R'-64 
*/
 #define ENOERR ((int)(66072050 & 0xffff))
 
+#endif /* !__DOXYGEN__ */
+
 #endif

Modified: trunk/avr-libc/include/math.h
===================================================================
--- trunk/avr-libc/include/math.h       2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/math.h       2016-02-07 22:59:47 UTC (rev 2503)
@@ -167,14 +167,15 @@
  */
 extern double modf(double __x, double *__iptr);
 
-/** The alias for modf().
- */
+/** An alias for modf(). */
 extern float modff (float __x, float *__iptr);
 
 /**
     The sqrt() function returns the non-negative square root of \a __x.
  */
 extern double sqrt(double __x) __ATTR_CONST__;
+
+/** An alias for sqrt(). */
 extern float sqrtf (float) __ATTR_CONST__;
 
 /**

Modified: trunk/avr-libc/include/setjmp.h
===================================================================
--- trunk/avr-libc/include/setjmp.h     2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/setjmp.h     2016-02-07 22:59:47 UTC (rev 2503)
@@ -115,7 +115,7 @@
     }
     \endcode */
 
-#ifndef __ATTR_NORETURN__
+#if !(defined(__ATTR_NORETURN__) || defined(__DOXYGEN__))
 #define __ATTR_NORETURN__ __attribute__((__noreturn__))
 #endif
 

Modified: trunk/avr-libc/include/stdint.h
===================================================================
--- trunk/avr-libc/include/stdint.h     2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/stdint.h     2016-02-07 22:59:47 UTC (rev 2503)
@@ -49,6 +49,7 @@
     Since these typedefs are mandated by the C99 standard, they are preferred
     over rolling your own typedefs.  */
 
+#ifndef __DOXYGEN__
 /*
  * __USING_MINT8 is defined to 1 if the -mint8 option is in effect.
  */
@@ -58,6 +59,8 @@
 # define __USING_MINT8 0
 #endif
 
+#endif /* !__DOXYGEN__ */
+
 /* Integer types */
 
 #if defined(__DOXYGEN__)
@@ -281,12 +284,15 @@
 
 /address@hidden/
 
+#ifndef __DOXYGEN__
 /* Helping macro */
 #ifndef __CONCAT
 #define __CONCATenate(left, right) left ## right
 #define __CONCAT(left, right) __CONCATenate(left, right)
 #endif
 
+#endif /* !__DOXYGEN__ */
+
 #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
 
 /** \name Limits of specified-width integer types

Modified: trunk/avr-libc/include/stdio.h
===================================================================
--- trunk/avr-libc/include/stdio.h      2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/stdio.h      2016-02-07 22:59:47 UTC (rev 2503)
@@ -44,9 +44,11 @@
 #include <inttypes.h>
 #include <stdarg.h>
 
+#ifndef __DOXYGEN__
 #define __need_NULL
 #define __need_size_t
 #include <stddef.h>
+#endif /* !__DOXYGEN__ */
 
 /** \file */
 /** \defgroup avr_stdio <stdio.h>: Standard IO facilities
@@ -941,7 +943,8 @@
 }
 #endif
 
-#if 1 /* ??? unimplemented  */
+#ifndef __DOXYGEN__
+/* only mentioned for libstdc++ support, not implemented in library */
 #define BUFSIZ 1024
 #define _IONBF 0
 __extension__ typedef long long fpos_t;
@@ -961,7 +964,7 @@
 extern int setvbuf(FILE *stream, char *buf, int mode, size_t size);
 extern FILE *tmpfile(void);
 extern char *tmpnam (char *s);
-#endif
+#endif /* !__DOXYGEN__ */
 
 #ifdef __cplusplus
 }
@@ -969,6 +972,7 @@
 
 /address@hidden/
 
+#ifndef __DOXYGEN__
 /*
  * The following constants are currently not used by avr-libc's
  * stdio subsystem.  They are defined here since the gcc build
@@ -978,6 +982,8 @@
 #define SEEK_CUR 1
 #define SEEK_END 2
 
+#endif
+
 #endif /* __ASSEMBLER */
 
 #endif /* _STDLIB_H_ */

Modified: trunk/avr-libc/include/stdlib.h
===================================================================
--- trunk/avr-libc/include/stdlib.h     2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/stdlib.h     2016-02-07 22:59:47 UTC (rev 2503)
@@ -41,6 +41,7 @@
 
 #ifndef __ASSEMBLER__
 
+#ifndef __DOXYGEN__
 #define __need_NULL
 #define __need_size_t
 #define __need_wchar_t
@@ -49,6 +50,7 @@
 #ifndef __ptr_t
 #define __ptr_t void *
 #endif
+#endif /* !__DOXYGEN__ */
 
 #ifdef __cplusplus
 extern "C" {
@@ -669,9 +671,12 @@
 
 /address@hidden/
 
+#ifndef __DOXYGEN__
+/* dummy declarations for libstdc++ compatibility */
 extern int atexit(void (*)(void));
 extern int system (const char *);
 extern char *getenv (const char *);
+#endif /* __DOXYGEN__ */
 
 #ifdef __cplusplus
 }

Modified: trunk/avr-libc/include/string.h
===================================================================
--- trunk/avr-libc/include/string.h     2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/string.h     2016-02-07 22:59:47 UTC (rev 2503)
@@ -40,6 +40,7 @@
 #ifndef        _STRING_H_
 #define        _STRING_H_ 1
 
+#ifndef __DOXYGEN__
 #define        __need_NULL
 #define        __need_size_t
 #include <stddef.h>
@@ -51,6 +52,7 @@
 #ifndef __ATTR_CONST__
 # define __ATTR_CONST__        __attribute__((__const__))
 #endif
+#endif /* !__DOXYGEN__ */
 
 #ifdef __cplusplus
 extern "C" {
@@ -147,11 +149,12 @@
 extern char *strtok_r(char *, const char *, char **);
 extern char *strupr(char *);
 
-#if 1 /* ??? unimplemented */
+#ifndef __DOXYGEN__
+/* libstdc++ compatibility, dummy declarations */
 extern int strcoll(const char *s1, const char *s2);
 extern char *strerror(int errnum);
 extern size_t strxfrm(char *dest, const char *src, size_t n);
-#endif
+#endif /* !__DOXYGEN__ */
 
 #ifdef __cplusplus
 }

Modified: trunk/avr-libc/include/time.h
===================================================================
--- trunk/avr-libc/include/time.h       2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/include/time.h       2016-02-07 22:59:47 UTC (rev 2503)
@@ -132,22 +132,7 @@
         The tm structure contains a representation of time 'broken down' into 
components of the
         Gregorian calendar.
 
-        The normal ranges of the elements are..
-
-    \code
-        tm_sec      seconds after the minute - [ 0 to 59 ]
-        tm_min      minutes after the hour - [ 0 to 59 ]
-        tm_hour     hours since midnight - [ 0 to 23 ]
-        tm_mday     day of the month - [ 1 to 31 ]
-        tm_wday     days since Sunday - [ 0 to 6 ]
-        tm_mon      months since January - [ 0 to 11 ]
-        tm_year     years since 1900
-        tm_yday     days since January 1 - [ 0 to 365 ]
-        tm_isdst    Daylight Saving Time flag *
-
-    \endcode
-
-        *The value of tm_isdst is zero if Daylight Saving Time is not in 
effect, and is negative if
+        The value of tm_isdst is zero if Daylight Saving Time is not in 
effect, and is negative if
         the information is not available.
 
         When Daylight Saving Time is in effect, the value represents the 
number of
@@ -157,18 +142,18 @@
 
     */
     struct tm {
-        int8_t          tm_sec;
-        int8_t          tm_min;
-        int8_t          tm_hour;
-        int8_t          tm_mday;
-        int8_t          tm_wday;
-        int8_t          tm_mon;
-        int16_t         tm_year;
-        int16_t         tm_yday;
-        int16_t         tm_isdst;
+        int8_t          tm_sec; /**< seconds after the minute - [ 0 to 59 ] */
+        int8_t          tm_min; /**< minutes after the hour - [ 0 to 59 ] */
+        int8_t          tm_hour; /**< hours since midnight - [ 0 to 23 ] */
+        int8_t          tm_mday; /**< day of the month - [ 1 to 31 ] */
+        int8_t          tm_wday; /**< days since Sunday - [ 0 to 6 ] */
+        int8_t          tm_mon; /**< months since January - [ 0 to 11 ] */
+        int16_t         tm_year; /**< years since 1900 */
+        int16_t         tm_yday; /**< days since January 1 - [ 0 to 365 ] */
+        int16_t         tm_isdst; /**< Daylight Saving Time flag */
     };
 
-    
+#ifndef __DOXYGEN__
     /* We have to provide clock_t / CLOCKS_PER_SEC so that libstdc++-v3 can
        be built.  We define CLOCKS_PER_SEC via a symbol _CLOCKS_PER_SEC_
        so that the user can provide the value on the link line, which should
@@ -177,6 +162,7 @@
     extern char *_CLOCKS_PER_SEC_;
 #define CLOCKS_PER_SEC ((clock_t) _CLOCKS_PER_SEC_)
     extern clock_t clock(void);
+#endif /* !__DOXYGEN__ */
 
     /**
     This function 'compiles' the elements of a broken-down time structure, 
returning a binary time stamp.
@@ -391,10 +377,10 @@
         Structure which represents a date as a year, week number of that year, 
and day of week.
         See http://en.wikipedia.org/wiki/ISO_week_date for more information.
     */
-    struct week_date{
-        int year;
-        int week;
-        int day;
+    struct week_date {
+        int year; /**< year number (Gregorian calendar) */
+        int week; /**< week number (#1 is where first Thursday is in) */
+        int day; /**< day within week */
     };
 
     /**

Modified: trunk/avr-libc/libc/pmstring/memchr_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/memchr_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/memchr_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -29,20 +29,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn PGM_VOID_P memchr_P(PGM_VOID_P s, int val, size_t len)
-    \brief Scan flash memory for a character.
-
-    The memchr_P() function scans the first \p len bytes of the flash
-    memory area pointed to by \p s for the character \p val.  The first
-    byte to match \p val (interpreted as an unsigned character) stops
-    the operation.
-
-    \return The memchr_P() function returns a pointer to the matching
-    byte or \c NULL if the character does not occur in the given memory
-    area.      */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/memcmp_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/memcmp_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/memcmp_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -29,21 +29,6 @@
   
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn int memcmp_P(const void *s1, PGM_VOID_P s2, size_t len)
-    \brief Compare memory areas
-    
-    The memcmp_P() function compares the first \p len bytes of the memory
-    areas \p s1 and flash \p s2. The comparision is performed using unsigned
-    char operations.
-    
-    \returns The memcmp_P() function returns an integer less than, equal
-    to, or greater than zero if the first \p len bytes of \p s1 is found,
-    respectively, to be less than, to match, or be greater than the first
-    \p len bytes of \p s2.     */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/memcmp_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/memcmp_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/memcmp_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -35,24 +35,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn int memcmp_PF(const void *s1, uint_farptr_t s2, size_t len)
-    \brief Compare memory areas
-
-    The memcmp_PF() function compares the first \p len bytes of the memory
-    areas \p s1 and flash \p s2. The comparision is performed using unsigned
-    char operations. It is an equivalent of memcmp_P() function, except
-    that it is capable working on all FLASH including the exteded area
-    above 64kB.
-
-    \returns The memcmp_PF() function returns an integer less than, equal
-    to, or greater than zero if the first \p len bytes of \p s1 is found,
-    respectively, to be less than, to match, or be greater than the first
-    \p len bytes of \p s2.  */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/memcpy_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/memcpy_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/memcpy_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,16 +28,8 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn void *memcpy_P(void *dest, PGM_VOID_P src, size_t n)
 
-    The memcpy_P() function is similar to memcpy(), except the src string
-    resides in program space.
 
-    \returns The memcpy_P() function returns a pointer to dest.  */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/memcpy_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/memcpy_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/memcpy_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -45,20 +45,6 @@
 #define len_b1 r19
 #define len_b0 r18
 
-/** \ingroup avr_pgmspace
-    \fn void *memcpy_PF (void *dest, uint_farptr_t src, size_t n)
-    \brief Copy a memory block from flash to SRAM
-
-    The memcpy_PF() function is similar to memcpy(), except the data
-    is copied from the program space and is addressed using a far pointer
-
-       \param dst A pointer to the destination buffer
-       \param src A far pointer to the origin of data in flash memory
-       \param n The number of bytes to be copied
-
-    \returns The memcpy_PF() function returns a pointer to \e dst. The contents
-    of RAMPZ SFR are undefined when the function returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/memrchr_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/memrchr_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/memrchr_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,18 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn PGM_VOID_P memrchr_P(PGM_VOID_P src, int val, size_t len)
-
-    The memrchr_P() function is like the memchr_P() function, except
-    that it searches backwards from the end of the \p len bytes pointed
-    to by \p src instead of forwards from the front. (Glibc, GNU extension.)
-
-    \return The memrchr_P() function returns a pointer to the matching
-    byte or \c NULL if the character does not occur in the given memory
-    area.      */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strcasecmp_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcasecmp_P.S 2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcasecmp_P.S 2016-02-07 22:59:47 UTC (rev 
2503)
@@ -36,25 +36,8 @@
    Contributors:
      Created by Reiner Patommel
 */
-/** \file */
 
-/** \ingroup avr_pgmspace
-    \fn int strcasecmp_P(const char *s1, PGM_P s2)
-    \brief Compare two strings ignoring case.
 
-    The strcasecmp_P() function compares the two strings \p s1 and \p s2,
-    ignoring the case of the characters.
-
-    \param s1 A pointer to a string in the devices SRAM.
-    \param s2 A pointer to a string in the devices Flash.
-
-    \returns The strcasecmp_P() function returns an integer less than,
-    equal to, or greater than zero if \p s1 is found, respectively, to
-    be less than, to match, or be greater than \p s2. A consequence of
-    the ordering used by strcasecmp_P() is that if \p s1 is an initial
-    substring of \p s2, then \p s1 is considered to be "less than" \p s2. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strcasecmp_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcasecmp_PF.S        2016-02-07 09:03:41 UTC 
(rev 2502)
+++ trunk/avr-libc/libc/pmstring/strcasecmp_PF.S        2016-02-07 22:59:47 UTC 
(rev 2503)
@@ -49,21 +49,6 @@
 #define tmp s2_b1      /* copied to Z pointer */
 #define cht s2_b0
 
-/** \ingroup avr_pgmspace
-    \fn int strcasecmp_PF (const char *s1, uint_farptr_t s2)
-    \brief Compare two strings ignoring case
-
-    The strcasecmp_PF() function compares the two strings \e s1 and \e s2, 
ignoring
-    the case of the characters
-
-    \param s1 A pointer to the first string in SRAM
-    \param s2 A far pointer to the second string in Flash
-
-    \returns The strcasecmp_PF() function returns an integer less than, equal
-    to, or greater than zero if \e s1 is found, respectively, to be less than, 
to
-    match, or be greater than \e s2. The contents of RAMPZ SFR are undefined
-    when the function returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strcat_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcat_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcat_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -35,17 +35,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn char *strcat_P(char *dest, PGM_P src)
-
-    The strcat_P() function is similar to strcat() except that the \e src
-    string must be located in program space (flash).
-
-    \returns The strcat() function returns a pointer to the resulting string
-    \e dest. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strcat_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcat_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcat_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -44,21 +44,6 @@
 #define src_b1 r21
 #define src_b0 r20
 
-/** \ingroup avr_pgmspace
-    \fn char *strcat_PF (char *dst, uint_farptr_t src)
-       \brief Concatenates two strings
-
-    The strcat_PF() function is similar to strcat() except that the \e src
-    string must be located in program space (flash) and is addressed using
-    a far pointer
-
-    \param dst A pointer to the destination string in SRAM
-    \param src A far pointer to the string to be appended in Flash
-
-    \returns The strcat_PF() function returns a pointer to the resulting
-    string \e dst. The contents of RAMPZ SFR are undefined when the function
-    returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strchr_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strchr_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strchr_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -29,24 +29,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn PGM_P strchr_P(PGM_P s, int val)
-    \brief Locate character in program space string.
-
-    The strchr_P() function locates the first occurrence of \p val
-    (converted to a char) in the string pointed to by \p s in program
-    space. The terminating null character is considered to be part of
-    the string.
-    
-    The strchr_P() function is similar to strchr() except that \p s is
-    pointer to a string in program space.
-
-    \returns The strchr_P() function returns a pointer to the matched
-    character or \c NULL if the character is not found. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strchrnul_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strchrnul_P.S  2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strchrnul_P.S  2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,18 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn PGM_P strchrnul_P(PGM_P s, int c)
-
-    The strchrnul_P() function is like strchr_P() except that if \p c is
-    not found in \p s, then it returns a pointer to the null byte at the
-    end of \p s, rather than \c NULL. (Glibc, GNU extension.)
-
-    \return The strchrnul_P() function returns a pointer to the matched
-    character, or a pointer to the null byte at the end of \p s (i.e.,
-    \c s+strlen(s)) if the character is not found.     */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strcmp_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcmp_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcmp_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,20 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn int strcmp_P(const char *s1, PGM_P s2)
-
-    The strcmp_P() function is similar to strcmp() except that \p s2 is
-    pointer to a string in program space.
-
-    \returns The strcmp_P() function returns an integer less than, equal
-    to, or greater than zero if \p s1 is found, respectively, to be less
-    than, to match, or be greater than \p s2. A consequence of the
-    ordering used by strcmp_P() is that if \p s1 is an initial substring
-    of \p s2, then \p s1 is considered to be "less than" \p s2. */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strcmp_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcmp_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcmp_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -46,21 +46,6 @@
 #define ret_b1 r25
 #define ret_b0 r24
 
-/** \ingroup avr_pgmspace
-    \fn int strcmp_PF (const char *s1, uint_farptr_t s2)
-       \brief Compares two strings
-
-    The strcmp_PF() function is similar to strcmp() except that \e s2 is a far
-    pointer to a string in program space
-
-    \param s1 A pointer to the first string in SRAM
-    \param s2 A far pointer to the second string in Flash
-
-    \returns The strcmp_PF() function returns an integer less than, equal to,
-    or greater than zero if \e s1 is found, respectively, to be less than, to
-    match, or be greater than \e s2. The contents of RAMPZ SFR are undefined
-    when the function returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strcpy_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcpy_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcpy_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,17 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn char *strcpy_P(char *dest, PGM_P src)
-
-    The strcpy_P() function is similar to strcpy() except that src is a
-    pointer to a string in program space.
-
-    \returns The strcpy_P() function returns a pointer to the destination
-    string dest. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strcpy_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcpy_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcpy_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -43,20 +43,6 @@
 #define src_b1 r21
 #define src_b0 r20
 
-/** \ingroup avr_pgmspace
-    \fn char *strcpy_PF (char *dst, uint_farptr_t src)
-       \brief Duplicate a string
-
-    The strcpy_PF() function is similar to strcpy() except that \e src is a far
-    pointer to a string in program space
-
-    \param dst A pointer to the destination string in SRAM
-    \param src A far pointer to the source string in Flash
-
-    \returns The strcpy_PF() function returns a pointer to the destination
-    string \e dst. The contents of RAMPZ SFR are undefined when the funcion
-    returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strcspn_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strcspn_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strcspn_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,19 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn size_t strcspn_P(const char *s, PGM_P reject)
-    
-    The strcspn_P() function calculates the length of the initial segment
-    of \p s which consists entirely of characters not in \p reject. This
-    function is similar to strcspn() except that \p reject is a pointer
-    to a string in program space.
-
-    \return The strcspn_P() function returns the number of characters in
-    the initial segment of \p s which are not in the string \p reject.
-    The terminating zero is not considered as a part of string.        */
-
 #if !defined(__AVR_TINY__)
 
 #ifndef        __DOXYGEN__

Modified: trunk/avr-libc/libc/pmstring/strlcat_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strlcat_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strlcat_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -35,24 +35,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn size_t strlcat_P (char *dst, PGM_P src, size_t siz)
-    \brief Concatenate two strings.
-
-    The strlcat_P() function is similar to strlcat(), except that the \p src
-    string must be located in program space (flash).
-
-    Appends \p src to string \p dst of size \p siz (unlike strncat(),
-    \p siz is the full size of \p dst, not space left).  At most \p siz-1
-    characters will be copied.  Always NULL terminates (unless \p siz <=
-    \p strlen(dst)).
-
-    \returns The strlcat_P() function returns strlen(src) + MIN(siz,
-    strlen(initial dst)).  If retval >= siz, truncation occurred.      */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strlcat_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strlcat_PF.S   2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strlcat_PF.S   2016-02-07 22:59:47 UTC (rev 
2503)
@@ -34,26 +34,6 @@
 
 /* $Id$ */
 
-/** \ingroup avr_pgmspace
-    \fn size_t strlcat_PF (char *dst, uint_farptr_t src, size_t n)
-    \brief Concatenate two strings
-
-    The strlcat_PF() function is similar to strlcat(), except that the \e src
-    string must be located in program space (flash) and is addressed using
-       a far pointer
-
-    Appends src to string dst of size \e n (unlike strncat(), \e n is the
-    full size of \e dst, not space left).  At most \e n-1 characters
-    will be copied.  Always NULL terminates (unless \e n <= strlen(\e dst))
-
-    \param dst A pointer to the destination string in SRAM
-    \param src A far pointer to the source string in Flash
-    \param n The total number of bytes allocated to the destination string
-
-    \returns The strlcat_PF() function returns strlen(\e src) + MIN(\e n,
-    strlen(initial \e dst)).  If retval >= \e n, truncation occurred. The
-    contents of RAMPZ SFR are undefined when the funcion returns */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strlcpy_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strlcpy_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strlcpy_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -35,20 +35,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn size_t strlcpy_P (char *dst, PGM_P src, size_t siz)
-    \brief Copy a string from progmem to RAM.
-
-    Copy \p src to string \p dst of size \p siz.  At most \p siz-1
-    characters will be copied.  Always NULL terminates (unless \p siz == 0).
-    The strlcpy_P() function is similar to strlcpy() except that the
-    \p src is pointer to a string in memory space.
-
-    \returns The strlcpy_P() function returns strlen(src). If
-    retval >= siz, truncation occurred.  */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strlcpy_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strlcpy_PF.S   2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strlcpy_PF.S   2016-02-07 22:59:47 UTC (rev 
2503)
@@ -34,17 +34,6 @@
 
 /* $Id$ */
 
-/** \ingroup avr_pgmspace
-    \fn size_t strlcpy_PF (char *dst, uint_farptr_t src, size_t siz)
-    \brief Copy a string from progmem to RAM.
-
-    Copy src to string dst of size siz.  At most siz-1 characters will be
-    copied. Always NULL terminates (unless siz == 0).
-
-    \returns The strlcpy_PF() function returns strlen(src). If retval >= siz,
-    truncation occurred.  The contents of RAMPZ SFR are undefined when the
-    function returns */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strlen_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strlen_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strlen_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,22 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn size_t strlen_P(PGM_P src)
-
-    The strlen_P() function is similar to strlen(), except that src is a
-    pointer to a string in program space.
-
-    \returns The strlen() function returns the number of characters in src.
-    
-    \note strlen_P() is implemented as an inline function in the avr/pgmspace.h
-    header file, which will check if the length of the string is a constant
-    and known at compile time. If it is not known at compile time, the macro
-    will issue a call to __strlen_P() which will then calculate the length
-    of the string as normal.
-*/
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strlen_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strlen_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strlen_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -41,18 +41,6 @@
 #define src_b1 r23
 #define src_b0 r22
 
-/** \ingroup avr_pgmspace
-    \fn size_t strlen_PF (uint_farptr_t s)
-    \brief Obtain the length of a string
-
-    The strlen_PF() function is similar to strlen(), except that \e s is a
-    far pointer to a string in program space
-
-    \param s A far pointer to the string in flash
-
-    \returns The strlen_PF() function returns the number of characters in
-    \e s. The contents of RAMPZ SFR are undefined when the function returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strncasecmp_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncasecmp_P.S        2016-02-07 09:03:41 UTC 
(rev 2502)
+++ trunk/avr-libc/libc/pmstring/strncasecmp_P.S        2016-02-07 22:59:47 UTC 
(rev 2503)
@@ -36,27 +36,7 @@
    Contributors:
      Created by Reiner Patommel
 */
-/** \file */
 
-/** \ingroup avr_pgmspace
-    \fn int strncasecmp_P(const char *s1, PGM_P s2, size_t n)
-    \brief Compare two strings ignoring case.
-
-    The strncasecmp_P() function is similar to strcasecmp_P(), except it
-    only compares the first \p n characters of \p s1.
-
-    \param s1 A pointer to a string in the devices SRAM.
-    \param s2 A pointer to a string in the devices Flash.
-    \param n The maximum number of bytes to compare.
-
-    \returns The strncasecmp_P() function returns an integer less than,
-    equal to, or greater than zero if \p s1 (or the first \p n bytes
-    thereof) is found, respectively, to be less than, to match, or be
-    greater than \p s2. A consequence of the ordering used by
-    strncasecmp_P() is that if \p s1 is an initial substring of \p s2,
-    then \p s1 is considered to be "less than" \p s2.  */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strncasecmp_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncasecmp_PF.S       2016-02-07 09:03:41 UTC 
(rev 2502)
+++ trunk/avr-libc/libc/pmstring/strncasecmp_PF.S       2016-02-07 22:59:47 UTC 
(rev 2503)
@@ -51,23 +51,6 @@
 #define ret_b1 r25
 #define ret_b0 r24
 
-/** \ingroup avr_pgmspace
-    \fn int strncasecmp_PF (const char *s1, uint_farptr_t s2, size_t n)
-    \brief Compare two strings ignoring case
-
-    The strncasecmp_PF() function is similar to strcasecmp_PF(), except it
-    only compares the first \e n characters of \e s1 and the string in flash is
-    addressed using a far pointer
-
-    \param s1 A pointer to a string in SRAM
-    \param s2 A far pointer to a string in Flash
-    \param n The maximum number of bytes to compare
-
-    \returns The strncasecmp_PF() function returns an integer less than, equal
-    to, or greater than zero if \e s1 (or the first \e n bytes thereof) is 
found,
-    respectively, to be less than, to match, or be greater than \e s2. The
-    contents of RAMPZ SFR are undefined when the function returns  */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strncat_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncat_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strncat_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -29,17 +29,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn char *strncat_P(char *dest, PGM_P src, size_t len)
-    \brief Concatenate two strings.
-
-    The strncat_P() function is similar to strncat(), except that the \e src
-    string must be located in program space (flash).
-
-    \returns The strncat_P() function returns a pointer to the resulting string
-    dest.  */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strncat_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncat_PF.S   2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strncat_PF.S   2016-02-07 22:59:47 UTC (rev 
2503)
@@ -47,22 +47,6 @@
 #define len_b1 r19
 #define len_b0 r18
 
-/** \ingroup avr_pgmspace
-    \fn char *strncat_PF (char *dst, uint_farptr_t src, size_t n)
-    \brief Concatenate two strings
-
-    The strncat_PF() function is similar to strncat(), except that the \e src
-    string must be located in program space (flash) and is addressed using a
-    far pointer
-
-    \param dst A pointer to the destination string in SRAM
-    \param src A far pointer to the source string in Flash
-    \param n The maximum number of bytes to append
-
-    \returns The strncat_PF() function returns a pointer to the resulting
-    string \e dst. The contents of RAMPZ SFR are undefined when the function
-    returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strncmp_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncmp_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strncmp_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,17 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn int strncmp_P(const char *s1, PGM_P s2, size_t n)
-
-    The strncmp_P() function is similar to strcmp_P() except it only compares
-    the first (at most) n characters of s1 and s2.
-
-    \returns The strncmp_P() function returns an integer less than, equal to,
-    or greater than zero if s1 (or the first n bytes thereof) is found,
-    respectively, to be less than, to match, or be greater than s2.  */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strncmp_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncmp_PF.S   2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strncmp_PF.S   2016-02-07 22:59:47 UTC (rev 
2503)
@@ -48,22 +48,6 @@
 #define ret_b1 r25
 #define ret_b0 r24
 
-/** \ingroup avr_pgmspace
-    \fn int strncmp_PF (const char *s1, uint_farptr_t s2, size_t n)
-    \brief Compare two strings with limited length
-
-    The strncmp_PF() function is similar to strcmp_PF() except it only
-    compares the first (at most) \e n characters of \e s1 and \e s2
-
-    \param s1 A pointer to the first string in SRAM
-    \param s2 A far pointer to the second string in Flash
-    \param n The maximum number of bytes to compare
-
-    \returns The strncmp_PF() function returns an integer less than, equal
-    to, or greater than zero if \e s1 (or the first \e n bytes thereof) is 
found,
-    respectively, to be less than, to match, or be greater than \e s2. The
-    contents of RAMPZ SFR are undefined when the function returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strncpy_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncpy_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strncpy_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -29,21 +29,6 @@
 /* $Id$ */
 
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn char *strncpy_P(char *dest, PGM_P src, size_t n)
-
-    The strncpy_P() function is similar to strcpy_P() except that not more
-    than n bytes of src are copied.  Thus, if there is no null byte among the
-    first n bytes of src, the result will not be null-terminated.
-
-    In the case where the length of src is less than that of n, the remainder
-    of dest will be padded with nulls.
-
-    \returns The strncpy_P() function returns a pointer to the destination
-    string dest.  */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strncpy_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strncpy_PF.S   2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strncpy_PF.S   2016-02-07 22:59:47 UTC (rev 
2503)
@@ -46,25 +46,6 @@
 #define len_b0 r18
 
 
-/** \ingroup avr_pgmspace
-    \fn char *strncpy_PF (char *dst, uint_farptr_t src, size_t n)
-       \brief Duplicate a string until a limited length
-
-    The strncpy_PF() function is similar to strcpy_PF() except that not more
-    than \e n bytes of \e src are copied.  Thus, if there is no null byte among
-    the first \e n bytes of \e src, the result will not be null-terminated
-
-    In the case where the length of \e src is less than that of \e n, the
-    remainder of \e dst will be padded with nulls
-
-    \param dst A pointer to the destination string in SRAM
-    \param src A far pointer to the source string in Flash
-    \param n The maximum number of bytes to copy
-
-    \returns The strncpy_PF() function returns a pointer to the destination
-    string \e dst. The contents of RAMPZ SFR are undefined when the function
-    returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strnlen_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strnlen_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strnlen_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -32,19 +32,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn size_t strnlen_P(PGM_P src, size_t len)
-    \brief Determine the length of a fixed-size string.
-
-    The strnlen_P() function is similar to strnlen(), except that \c src is a
-    pointer to a string in program space.
-
-    \returns The strnlen_P function returns strlen_P(src), if that is less than
-    \c len, or \c len if there is no '\\0' character among the first \c len
-    characters pointed to by \c src. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strnlen_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strnlen_PF.S   2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strnlen_PF.S   2016-02-07 22:59:47 UTC (rev 
2503)
@@ -47,21 +47,6 @@
 #define len_b1 r21
 #define len_b0 r20
 
-/** \ingroup avr_pgmspace
-    \fn size_t strnlen_PF(uint_farptr_t s, size_t len)
-    \brief Determine the length of a fixed-size string
-
-    The strnlen_PF() function is similar to strnlen(), except that \e s is a
-    far pointer to a string in program space
-
-    \param s A far pointer to the string in Flash
-    \param len The maximum number of length to return
-
-    \returns The strnlen_PF function returns strlen_P(\e s), if that is less
-    than \e len, or \e len if there is no '\\0' character among the first \e
-    len characters pointed to by \e s. The contents of RAMPZ SFR are
-    undefined when the function returns */
-
 #if !defined(__DOXYGEN__)
 
        .text

Modified: trunk/avr-libc/libc/pmstring/strpbrk_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strpbrk_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strpbrk_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,22 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn char *strpbrk_P(const char *s, PGM_P accept)
-    
-    The strpbrk_P() function locates the first occurrence in the string
-    \p s of any of the characters in the flash string \p accept. This
-    function is similar to strpbrk() except that \p accept is a pointer
-    to a string in program space.
-
-    \return  The strpbrk_P() function returns a pointer to the character
-    in \p s that matches one of the characters in \p accept, or \c NULL
-    if no such character is found. The terminating zero is not considered
-    as a part of string: if one or both args are empty, the result will
-    \c NULL.   */
-
-
 #if !defined(__AVR_TINY__)
 
 #ifndef        __DOXYGEN__

Modified: trunk/avr-libc/libc/pmstring/strrchr_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strrchr_P.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strrchr_P.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,19 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn PGM_P strrchr_P(PGM_P s, int val)
-    \brief Locate character in string.
-
-    The strrchr_P() function returns a pointer to the last occurrence of
-    the character \p val in the flash string \p s.
-
-    \return The strrchr_P() function returns a pointer to the matched
-    character or \c NULL if the character is not found. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strsep_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strsep_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strsep_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -31,28 +31,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn char *strsep_P(char **sp, PGM_P delim)
-    \brief Parse a string into tokens.
-
-    The strsep_P() function locates, in the string referenced by \p *sp,
-    the first occurrence of any character in the string \p delim (or the
-    terminating '\\0' character) and replaces it with a '\\0'.  The
-    location of the next character after the delimiter character (or \c
-    NULL, if the end of the string was reached) is stored in \p *sp. An
-    ``empty'' field, i.e. one caused by two adjacent delimiter
-    characters, can be detected by comparing the location referenced by
-    the pointer returned in \p *sp to '\\0'. This function is similar to
-    strsep() except that \p delim is a pointer to a string in program
-    space.
-   
-    \return The strsep_P() function returns a pointer to the original
-    value of \p *sp. If \p *sp is initially \c NULL, strsep_P() returns
-    \c NULL.   */
-     
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strspn_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strspn_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strspn_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -28,20 +28,6 @@
 
 /* $Id$ */
 
-/** \file */
-/** \ingroup avr_pgmspace
-    \fn size_t strspn_P(const char *s, PGM_P accept)
-
-    The strspn_P() function calculates the length of the initial segment
-    of \p s which consists entirely of characters in \p accept. This
-    function is similar to strspn() except that \p accept is a pointer
-    to a string in program space.
-                
-    \return  The strspn_P() function returns the number of characters in
-    the initial segment of \p s which consist only of characters from \p
-    accept. The terminating zero is not considered as a part of string.        
*/
-
-
 #if !defined(__AVR_TINY__)
 
 #ifndef        __DOXYGEN__

Modified: trunk/avr-libc/libc/pmstring/strstr_P.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strstr_P.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strstr_P.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -2,7 +2,7 @@
    Copyright (c) 2005, 2006, 2007 Werner Boellmann
    Copyright (c) 2007  Dmirty Xmelkov
    All rights reserved.
-   
+
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
 
@@ -36,27 +36,11 @@
 
    Originally contributed by:
      Philip Soeberg <address@hidden>
-     
-   Modified for string s2 in program space by: 
+
+   Modified for string s2 in program space by:
      Werner Boellmann <address@hidden>
 */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn char *strstr_P(const char *s1, PGM_P s2)
-    \brief Locate a substring.
-
-    The strstr_P() function finds the first occurrence of the substring
-    \p s2 in the string \p s1.  The terminating '\\0' characters are not
-    compared. The strstr_P() function is similar to strstr() except that
-    \p s2 is pointer to a string in program space.
-
-    \returns The strstr_P() function returns a pointer to the beginning
-    of the substring, or NULL if the substring is not found. If \p s2
-    points to a string of zero length, the function returns \p s1. */
-
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strstr_PF.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strstr_PF.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strstr_PF.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -35,21 +35,6 @@
 
 #include "macros.inc"
 
-/** \ingroup avr_pgmspace
-    \fn char *strstr_PF (const char *s1, uint_farptr_t s2)
-    \brief Locate a substring.
-
-    The strstr_PF() function finds the first occurrence of the substring \c s2
-    in the string \c s1.  The terminating '\\0' characters are not
-    compared.
-    The strstr_PF() function is similar to strstr() except that \c s2 is a
-    far pointer to a string in program space.
-
-    \returns The strstr_PF() function returns a pointer to the beginning of the
-    substring, or NULL if the substring is not found.
-    If \c s2 points to a string of zero length, the function returns \c s1. The
-    contents of RAMPZ SFR are undefined when the function returns */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/pmstring/strtok_P.c
===================================================================
--- trunk/avr-libc/libc/pmstring/strtok_P.c     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strtok_P.c     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -30,31 +30,9 @@
 
 #if !defined(__AVR_TINY__)
 
-/** \file */
-
 #include <avr/pgmspace.h>
 #include "sectionname.h"
 
-/** \ingroup avr_pgmspace
-    \brief Parses the string into tokens.
-
-    strtok_P() parses the string \p s into tokens. The first call to
-    strtok_P() should have \p s as its first argument. Subsequent calls
-    should have the first argument set to NULL. If a token ends with a
-    delimiter, this delimiting character is overwritten with a '\\0' and a
-    pointer to the next character is saved for the next call to strtok_P().
-    The delimiter string \p delim may be different for each call.
-
-    The strtok_P() function is similar to strtok() except that \p delim
-    is pointer to a string in program space.
-
-    \returns The strtok_P() function returns a pointer to the next token or
-    NULL when no more tokens are found.
-
-    \note strtok_P() is NOT reentrant. For a reentrant version of this
-    function see strtok_rP().
- */
- 
 ATTRIBUTE_CLIB_SECTION
 char *
 strtok_P (char *s, PGM_P delim)

Modified: trunk/avr-libc/libc/pmstring/strtok_rP.S
===================================================================
--- trunk/avr-libc/libc/pmstring/strtok_rP.S    2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/pmstring/strtok_rP.S    2016-02-07 22:59:47 UTC (rev 
2503)
@@ -29,27 +29,6 @@
 
 /* $Id$ */
 
-/** \file */
-
-/** \ingroup avr_pgmspace
-    \fn char *strtok_rP (char *string, PGM_P delim, char **last)
-    \brief Parses string into tokens.
-
-    The strtok_rP() function parses \p string into tokens. The first call to
-    strtok_rP() should have string as its first argument. Subsequent calls
-    should have the first argument set to NULL. If a token ends with a
-    delimiter, this delimiting character is overwritten with a '\\0' and a
-    pointer to the next character is saved for the next call to strtok_rP().
-    The delimiter string \p delim may be different for each call. \p last is
-    a user allocated char* pointer. It must be the same while parsing the
-    same string. strtok_rP() is a reentrant version of strtok_P().
-
-    The strtok_rP() function is similar to strtok_r() except that \p delim
-    is pointer to a string in program space.
-
-    \returns The strtok_rP() function returns a pointer to the next token or
-    NULL when no more tokens are found. */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/stdlib/atexit.c
===================================================================
--- trunk/avr-libc/libc/stdlib/atexit.c 2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/libc/stdlib/atexit.c 2016-02-07 22:59:47 UTC (rev 2503)
@@ -28,11 +28,13 @@
 
 #include <stdlib.h>
 
+#ifndef __DOXYGEN__
 static struct atexit_s
 {
   void (*fun) (void);
   struct atexit_s *next;
 } *atexit_p;
+#endif
 
 int
 atexit (void (*fun) (void))
@@ -46,6 +48,7 @@
   return 0;
 }
 
+#ifndef __DOXYGEN__
 /* Don't inline this code as naked to arrange for the very unlikely case
    that it needs a frame.   This won't work as naked function.  */
 
@@ -68,3 +71,4 @@
 {
   atexit_finido ();
 }
+#endif /* !__DOXYGEN__ */

Modified: trunk/avr-libc/libc/string/memccpy.S
===================================================================
--- trunk/avr-libc/libc/string/memccpy.S        2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/string/memccpy.S        2016-02-07 22:59:47 UTC (rev 
2503)
@@ -42,12 +42,6 @@
     in \p dest after \p val, or NULL if \p val was not found in the first
     \p len characters of \p src.       */
 
-/** \ingroup avr_pgmspace
-    \fn void *memccpy_P (void *dest, PGM_VOID_P src, int val, size_t len)
-
-    This function is similar to memccpy() except that \p src is pointer
-    to a string in program space.      */
-
 #if !defined(__DOXYGEN__)
 
 #include "asmdef.h"

Modified: trunk/avr-libc/libc/string/memmem.S
===================================================================
--- trunk/avr-libc/libc/string/memmem.S 2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/libc/string/memmem.S 2016-02-07 22:59:47 UTC (rev 2503)
@@ -41,12 +41,6 @@
     the substring, or \c NULL if the substring is not found. If \p len2
     is zero, the function returns \p s1.       */
 
-/** \ingroup avr_pgmspace
-    \fn void *memmem_P(const void *s1, size_t len1, PGM_VOID_P s2, size_t len2)
-    
-    The memmem_P() function is similar to memmem() except that \p s2 is
-    pointer to a string in program space.      */
-
 #if !defined(__AVR_TINY__)
 
 #if !defined(__DOXYGEN__)

Modified: trunk/avr-libc/libc/string/strcasestr.S
===================================================================
--- trunk/avr-libc/libc/string/strcasestr.S     2016-02-07 09:03:41 UTC (rev 
2502)
+++ trunk/avr-libc/libc/string/strcasestr.S     2016-02-07 22:59:47 UTC (rev 
2503)
@@ -41,12 +41,6 @@
     \return The strcasestr() function returns a pointer to the beginning
     of the substring, or \c NULL if the substring is not found. If \p s2
     points to a string of zero length, the function returns \p s1. */
-    
-/** \ingroup avr_pgmspace
-    \fn char *strcasestr_P(const char *s1, PGM_P s2)
-    
-    This funtion is similar to strcasestr() except that \p s2 is pointer
-    to a string in program space.      */
 
 #if !defined(__AVR_TINY__)
 

Modified: trunk/avr-libc/libc/string/strtok.c
===================================================================
--- trunk/avr-libc/libc/string/strtok.c 2016-02-07 09:03:41 UTC (rev 2502)
+++ trunk/avr-libc/libc/string/strtok.c 2016-02-07 22:59:47 UTC (rev 2503)
@@ -50,7 +50,9 @@
 #include <string.h>
 #include "sectionname.h"
 
+#ifndef __DOXYGEN__
 static char *p;
+#endif
 
 ATTRIBUTE_CLIB_SECTION
 char *




reply via email to

[Prev in Thread] Current Thread [Next in Thread]