Diff for /embedaddon/libiconv/srclib/relocatable.h between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2012/05/29 09:29:43 version 1.1.1.3, 2021/03/17 13:38:46
Line 1 Line 1
 /* Provide relocatable packages.  /* Provide relocatable packages.
   Copyright (C) 2003, 2005, 2008-2011 Free Software Foundation, Inc.   Copyright (C) 2003, 2005, 2008-2019 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2003.     Written by Bruno Haible <bruno@clisp.org>, 2003.
   
    This program is free software: you can redistribute it and/or modify     This program is free software: you can redistribute it and/or modify
Line 13 Line 13
    GNU General Public License for more details.     GNU General Public License for more details.
   
    You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
   
 #ifndef _RELOCATABLE_H  #ifndef _RELOCATABLE_H
 #define _RELOCATABLE_H  #define _RELOCATABLE_H
Line 52  extern RELOCATABLE_DLL_EXPORTED void Line 52  extern RELOCATABLE_DLL_EXPORTED void
    string that you can free with free() after casting it to 'char *'.  */     string that you can free with free() after casting it to 'char *'.  */
 extern const char * relocate (const char *pathname);  extern const char * relocate (const char *pathname);
   
   /* Returns the pathname, relocated according to the current installation
      directory.
      This function sets *ALLOCATEDP to the allocated memory, or to NULL if
      no memory allocation occurs.  So that, after you're done with the return
      value, to reclaim allocated memory, you can do: free (*ALLOCATEDP).  */
   extern const char * relocate2 (const char *pathname, char **allocatedp);
   
 /* Memory management: relocate() potentially allocates memory, because it has  /* Memory management: relocate() potentially allocates memory, because it has
    to construct a fresh pathname.  If this is a problem because your program     to construct a fresh pathname.  If this is a problem because your program
   calls relocate() frequently, think about caching the result.  Or free the   calls relocate() frequently or because you want to fix all potential memory
   return value if it was different from the argument pathname.  */   leaks anyway, you have three options:
    1) Use this idiom:
         const char *pathname = ...;
         const char *rel_pathname = relocate (pathname);
         ...
         if (rel_pathname != pathname)
           free ((char *) rel_pathname);
    2) Use this idiom:
         char *allocated;
         const char *rel_pathname = relocate2 (..., &allocated);
         ...
         free (allocated);
    3) Think about caching the result.  */
   
 /* Convenience function:  /* Convenience function:
    Computes the current installation prefix, based on the original     Computes the current installation prefix, based on the original
Line 70  extern char * compute_curr_prefix (const char *orig_in Line 89  extern char * compute_curr_prefix (const char *orig_in
   
 /* By default, we use the hardwired pathnames.  */  /* By default, we use the hardwired pathnames.  */
 #define relocate(pathname) (pathname)  #define relocate(pathname) (pathname)
   #define relocate2(pathname,allocatedp) (*(allocatedp) = NULL, (pathname))
   
 #endif  #endif
   

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>