X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsys-file-private.c;h=9114f54e2fda289a4c3a60a962434845c8aec48b;hb=d33c44dbdaa272f29bb849ad0b0be80356b9485a;hp=dd50ea8babefb434edece1080504bcc0f1e22e13;hpb=5c3291dc396b795696e94f47780308fd7ace6fc4;p=pspp diff --git a/src/data/sys-file-private.c b/src/data/sys-file-private.c index dd50ea8bab..9114f54e2f 100644 --- a/src/data/sys-file-private.c +++ b/src/data/sys-file-private.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,16 +16,17 @@ #include -#include +#include "data/sys-file-private.h" -#include -#include -#include -#include -#include +#include "data/dictionary.h" +#include "data/value.h" +#include "data/variable.h" +#include "libpspp/assertion.h" +#include "libpspp/misc.h" -#include "minmax.h" -#include "xalloc.h" +#include "gl/c-strcase.h" +#include "gl/minmax.h" +#include "gl/xalloc.h" /* Number of bytes really stored in each segment of a very long string variable. */ @@ -248,3 +249,34 @@ sfm_dictionary_to_sfm_vars (const struct dictionary *dict, return segment_cnt; } + +/* Given the name of an encoding, returns the codepage number to use in the + 'character_code' member of the machine integer info record for writing a + system file. */ +int +sys_get_codepage_from_encoding (const char *name) +{ + const struct sys_encoding *e; + + for (e = sys_codepage_name_to_number; e->name != NULL; e++) + if (!c_strcasecmp (name, e->name)) + return e->number; + + return 0; +} + +/* Given a codepage number from the 'character_code' member of the machine + integer info record in a system file, returns a corresponding encoding name. + Most encodings have multiple aliases; the one returned is the one that would + be used in the character encoding record. */ +const char * +sys_get_encoding_from_codepage (int codepage) +{ + const struct sys_encoding *e; + + for (e = sys_codepage_number_to_name; e->name != NULL; e++) + if (codepage == e->number) + return e->name; + + return NULL; +}