LCOV - code coverage report
Current view: top level - src/compiler - pstrutil.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 11 11 100.0 %
Date: 2016-11-30 13:12:14 Functions: 2 2 100.0 %
Branches: 6 8 75.0 %

           Branch data     Line data    Source code
       1                 :            : #ifndef PSTRUTIL_H
       2                 :            : #define PSTRUTIL_H
       3                 :            : 
       4                 :            : #include <ctype.h> /* toupper */
       5                 :            : 
       6                 :            : 
       7                 :            : /*
       8                 :            :  * NOTE: unlike strncpy, we return the first character, and we do not
       9                 :            :  * pad up to n. Same applies to related functions.
      10                 :            :  */
      11                 :            : 
      12                 :            : /* `strnlen` not widely supported. */
      13                 :            : static inline size_t pstrnlen(const char *s, size_t max_len)
      14                 :            : {
      15                 :        116 :     const char *end = memchr (s, 0, max_len);
      16         [ -  + ]:        116 :     return end ? (size_t)(end - s) : max_len;
      17                 :            : }
      18                 :            : 
      19                 :         16 : static inline char *pstrcpyupper(char *dst, const char *src) {
      20                 :            :     char *p = dst;
      21         [ +  + ]:        208 :     while (*src) {
      22                 :        192 :         *p++ = toupper(*src++);
      23                 :            :     }
      24                 :         16 :     *p = '\0';
      25                 :         16 :     return dst;
      26                 :            : }
      27                 :            : 
      28                 :            : static inline char *pstrncpyupper(char *dst, const char *src, size_t n) {
      29                 :            :     size_t i;
      30                 :            :     for (i = 0; i < n && src[i]; ++i) {
      31                 :            :         dst[i] = toupper(src[i]);
      32                 :            :     }
      33                 :            :     if (i < n) {
      34                 :            :         dst[i] = '\0';
      35                 :            :     }
      36                 :            :     return dst;
      37                 :            : }
      38                 :            : 
      39                 :            : static inline char *pstrtoupper(char *dst) {
      40                 :            :     char *p;
      41                 :            :     for (p = dst; *p; ++p) {
      42                 :            :         *p = toupper(*p);
      43                 :            :     }
      44                 :            :     return dst;
      45                 :            : }
      46                 :            : 
      47                 :         66 : static inline char *pstrntoupper(char *dst, size_t n) {
      48                 :            :     size_t i;
      49 [ +  + ][ +  - ]:        892 :     for (i = 0; i < n && dst[i]; ++i) {
      50                 :        826 :         dst[i] = toupper(dst[i]);
      51                 :            :     }
      52                 :         66 :     return dst;
      53                 :            : }
      54                 :            : 
      55                 :            : #undef strnlen
      56                 :            : #define strnlen pstrnlen
      57                 :            : 
      58                 :            : #endif /*  PSTRUTIL_H */

Generated by: LCOV version 1.12