X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvalue-labels.c;h=7cd8ff0daa3cd76c5d3aa902dbd13da8052453d9;hb=fa489d6ef77150e60c31906ee322bea2901da57f;hp=e061e452e5fbb000a79b535b8375ab002f79152a;hpb=e91248ddc41199bda0676817debf080c2b7835a1;p=pspp diff --git a/src/value-labels.c b/src/value-labels.c index e061e452e5..7cd8ff0daa 100644 --- a/src/value-labels.c +++ b/src/value-labels.c @@ -14,16 +14,16 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include "value-labels.h" -#include +#include "error.h" #include -#include #include "alloc.h" #include "hash.h" +#include "str.h" static hsh_compare_func compare_int_val_lab; static hsh_hash_func hash_int_val_lab; @@ -384,7 +384,7 @@ hash_int_val_lab (const void *vl_, void *vls_) /* Free a value label. */ void -free_int_val_lab (void *vl_, void *vls_ unused) +free_int_val_lab (void *vl_, void *vls_ UNUSED) { struct int_val_lab *vl = vl_; @@ -462,7 +462,7 @@ atom_to_string (const struct atom *atom) /* A hsh_compare_func that compares A and B. */ static int -compare_atoms (const void *a_, const void *b_, void *aux unused) +compare_atoms (const void *a_, const void *b_, void *aux UNUSED) { const struct atom *a = a_; const struct atom *b = b_; @@ -472,7 +472,7 @@ compare_atoms (const void *a_, const void *b_, void *aux unused) /* A hsh_hash_func that hashes ATOM. */ static unsigned -hash_atom (const void *atom_, void *aux unused) +hash_atom (const void *atom_, void *aux UNUSED) { const struct atom *atom = atom_; @@ -481,10 +481,44 @@ hash_atom (const void *atom_, void *aux unused) /* A hsh_free_func that destroys ATOM. */ static void -free_atom (void *atom_, void *aux unused) +free_atom (void *atom_, void *aux UNUSED) { struct atom *atom = atom_; free (atom->string); free (atom); } + + +/* Get a string representing the value. + That is, if it has a label, then return that label, + otherwise, if the value is alpha, then return the string for it, + else format it and return the formatted string +*/ +const char * +value_to_string(const union value *val, const struct variable *var) +{ + static char buf[100]; + char *s; + const struct val_labs *val_labs ; + + if ( !val || ! var ) + return 0; + + val_labs = var->val_labs; + + + s = val_labs_find (val_labs, *val); + + if ( s ) + return s; + + if ( 0 == var->width ) + snprintf(buf,100,"%g",val->f); + else + { + strncpy(buf,val->s,MAX_SHORT_STRING); + strcat(buf,"\0"); + } + return buf; +}