Diff for /embedaddon/libiconv/lib/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-2017 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 it     This program is free software; you can redistribute it and/or modify it
Line 12 Line 12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.     Library General Public License for more details.
   
   You should have received a copy of the GNU Library General Public   You should have received a copy of the GNU Library General Public License
   License along with this program; if not, write to the Free Software   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
   USA.  */ 
   
 #ifndef _RELOCATABLE_H  #ifndef _RELOCATABLE_H
 #define _RELOCATABLE_H  #define _RELOCATABLE_H
Line 54  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 72  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>