X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fu8-istream.c;h=b172b164f5c382c6055c205f0ea4f8e7ccc0f1c8;hb=ea17c5b225557fc0760810861451a84dc241d462;hp=c11163435f04bcf53d54c55f94960cc8de972955;hpb=fe8dc2171009e90d2335f159d05f7e6660e24780;p=pspp diff --git a/src/libpspp/u8-istream.c b/src/libpspp/u8-istream.c index c11163435f..b172b164f5 100644 --- a/src/libpspp/u8-istream.c +++ b/src/libpspp/u8-istream.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010, 2011, 2012 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 @@ -34,6 +34,7 @@ #include "libpspp/cast.h" #include "libpspp/compiler.h" #include "libpspp/encoding-guesser.h" +#include "libpspp/i18n.h" #include "gl/c-strcase.h" #include "gl/localcharset.h" @@ -120,7 +121,7 @@ u8_istream_for_fd (const char *fromcode, int fd) goto error; encoding = encoding_guess_head_encoding (fromcode, is->buffer, is->length); - if (!strcmp (encoding, "UTF-8")) + if (is_encoding_utf8 (encoding)) is->state = S_UTF8; else { @@ -193,8 +194,12 @@ fill_buffer (struct u8_istream *is) is->head = is->buffer; /* Read more input. */ - n = read (is->fd, is->buffer + is->length, - U8_ISTREAM_BUFFER_SIZE - is->length); + do + { + n = read (is->fd, is->buffer + is->length, + U8_ISTREAM_BUFFER_SIZE - is->length); + } + while (n < 0 && errno == EINTR); if (n > 0) is->length += n; return n;