ldpart.c (106053) | ldpart.c (116274) |
---|---|
1/* 2 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> | 1/* 2 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/lib/libc/locale/ldpart.c 106053 2002-10-27 17:44:33Z wollman $"); | 28__FBSDID("$FreeBSD: head/lib/libc/locale/ldpart.c 116274 2003-06-13 00:14:07Z jkh $"); |
29 30#include "namespace.h" 31#include <sys/types.h> 32#include <sys/stat.h> 33 34#include <errno.h> 35#include <fcntl.h> 36#include <limits.h> --- 5 unchanged lines hidden (view full) --- 42#include "setlocale.h" 43#include "ldpart.h" 44 45static int split_lines(char *, const char *); 46 47int 48__part_load_locale(const char *name, 49 int *using_locale, | 29 30#include "namespace.h" 31#include <sys/types.h> 32#include <sys/stat.h> 33 34#include <errno.h> 35#include <fcntl.h> 36#include <limits.h> --- 5 unchanged lines hidden (view full) --- 42#include "setlocale.h" 43#include "ldpart.h" 44 45static int split_lines(char *, const char *); 46 47int 48__part_load_locale(const char *name, 49 int *using_locale, |
50 char *locale_buf, | 50 char **locale_buf, |
51 const char *category_filename, 52 int locale_buf_size_max, 53 int locale_buf_size_min, 54 const char **dst_localebuf) 55{ 56 int saverr, fd, i, num_lines; 57 char *lbuf, *p; 58 const char *plim; --- 5 unchanged lines hidden (view full) --- 64 if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0) { 65 *using_locale = 0; 66 return (_LDP_CACHE); 67 } 68 69 /* 70 * If the locale name is the same as our cache, use the cache. 71 */ | 51 const char *category_filename, 52 int locale_buf_size_max, 53 int locale_buf_size_min, 54 const char **dst_localebuf) 55{ 56 int saverr, fd, i, num_lines; 57 char *lbuf, *p; 58 const char *plim; --- 5 unchanged lines hidden (view full) --- 64 if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0) { 65 *using_locale = 0; 66 return (_LDP_CACHE); 67 } 68 69 /* 70 * If the locale name is the same as our cache, use the cache. 71 */ |
72 if (locale_buf != NULL && strcmp(name, locale_buf) == 0) { | 72 if (*locale_buf != NULL && strcmp(name, *locale_buf) == 0) { |
73 *using_locale = 1; 74 return (_LDP_CACHE); 75 } 76 77 /* 78 * Slurp the locale file into the cache. 79 */ 80 namesize = strlen(name) + 1; --- 38 unchanged lines hidden (view full) --- 119 else { 120 errno = EFTYPE; 121 goto bad_lbuf; 122 } 123 (void)_close(fd); 124 /* 125 * Record the successful parse in the cache. 126 */ | 73 *using_locale = 1; 74 return (_LDP_CACHE); 75 } 76 77 /* 78 * Slurp the locale file into the cache. 79 */ 80 namesize = strlen(name) + 1; --- 38 unchanged lines hidden (view full) --- 119 else { 120 errno = EFTYPE; 121 goto bad_lbuf; 122 } 123 (void)_close(fd); 124 /* 125 * Record the successful parse in the cache. 126 */ |
127 if (locale_buf != NULL) 128 free(locale_buf); 129 locale_buf = lbuf; 130 for (p = locale_buf, i = 0; i < num_lines; i++) | 127 if (*locale_buf != NULL) 128 free(*locale_buf); 129 *locale_buf = lbuf; 130 for (p = *locale_buf, i = 0; i < num_lines; i++) |
131 dst_localebuf[i] = (p += strlen(p) + 1); 132 for (i = num_lines; i < locale_buf_size_max; i++) 133 dst_localebuf[i] = NULL; 134 *using_locale = 1; 135 136 return (_LDP_LOADED); 137 138bad_lbuf: --- 23 unchanged lines hidden --- | 131 dst_localebuf[i] = (p += strlen(p) + 1); 132 for (i = num_lines; i < locale_buf_size_max; i++) 133 dst_localebuf[i] = NULL; 134 *using_locale = 1; 135 136 return (_LDP_LOADED); 137 138bad_lbuf: --- 23 unchanged lines hidden --- |