X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2Fsys-file-private.c;h=9114f54e2fda289a4c3a60a962434845c8aec48b;hb=38ba1e157ad8053fb0c6eb44f2115e10de56d07d;hp=dd50ea8babefb434edece1080504bcc0f1e22e13;hpb=d57112cbb560e8fd0c88d8a00f23226e6096bb66;p=pspp-builds.git diff --git a/src/data/sys-file-private.c b/src/data/sys-file-private.c index dd50ea8b..9114f54e 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; +}