Home | History | Annotate | Download | only in bionic-fixup
      1 /*
      2  * Copyright 2012, The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef ANDROID_FIXUP_H
     18 #define ANDROID_FIXUP_H
     19 
     20 #include <stdio.h>
     21 #include <libgen.h>     // for basename
     22 
     23 //#define _OFF_T_DEFINED_
     24 
     25 //#define off_t           loff_t
     26 
     27 #ifndef MAX
     28 #define MAX(x,y)        ((x) > (y) ? (x) : (y))
     29 #endif
     30 
     31 #ifndef MIN
     32 #define MIN(x,y)        ((x) < (y) ? (x) : (y))
     33 #endif
     34 
     35 #ifndef powerof2
     36 #define powerof2(x)     (((x - 1) & (x)) == 0)
     37 #endif
     38 
     39 /* workaround for canonicalize_file_name */
     40 #define canonicalize_file_name(path) realpath(path, NULL)
     41 
     42 /* workaround for open64 */
     43 #define open64(path, flags)     open(path, ((flags) | O_LARGEFILE))
     44 
     45 /* no internalization */
     46 #define gettext(x)      (x)
     47 
     48 /* _mempcpy and mempcpy */
     49 #ifndef __mempcpy
     50 #define __mempcpy(dest, src, n)  mempcpy(dest, src, n)
     51 #endif
     52 
     53 #ifndef mempcpy
     54 #include <string.h>
     55 
     56 static inline void *mempcpy(void *dest, const void *src, size_t n)
     57 {
     58     char *ptr = memcpy(dest, src, n);
     59     return ptr + n;
     60 }
     61 #endif
     62 
     63 /* rawmemchr */
     64 static inline void *rawmemchr(const void *s, int c)
     65 {
     66     const unsigned char *ptr = s;
     67     while (1) {
     68         if (*ptr == c) return (void *) ptr;
     69         ptr++;
     70     }
     71 }
     72 
     73 /* workaround for stpcpy */
     74 static inline char *stpcpy(char *dst, const char *src)
     75 {
     76     while (*src) {
     77         *dst++ = *src++;
     78     }
     79     return dst;
     80 }
     81 
     82 /* forward declarations */
     83 char * dgettext (const char * domainname, const char * msgid);
     84 
     85 #endif /* ANDROID_FIXUP_H */
     86