Skip to content

Commit

Permalink
c
Browse files Browse the repository at this point in the history
  • Loading branch information
seleznevae committed Nov 14, 2018
1 parent 6fa7957 commit de6fa8a
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
13 changes: 9 additions & 4 deletions lib/fort.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,9 @@ size_t number_of_columns_in_format_wstring(const wchar_t *fmt);
/*int snprint_n_chars(char *buf, size_t length, size_t n, char ch);*/
/*int wsnprint_n_chars(wchar_t *buf, size_t length, size_t n, wchar_t ch);*/
int snprint_n_strings(char *buf, size_t length, size_t n, const char *str);
#if defined(FT_HAVE_WCHAR)
int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str);
#endif


#define CHCK_RSLT_ADD_TO_WRITTEN(statement) \
Expand Down Expand Up @@ -4134,6 +4136,9 @@ int snprint_n_strings(char *buf, size_t length, size_t n, const char *str)
// return (int)n;
//}

#if defined(FT_HAVE_WCHAR)
#define WCS_SIZE 64

int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str)
{
size_t str_len = strlen(str);
Expand All @@ -4147,12 +4152,12 @@ int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str)
if (*p <= 127)
p++;
else {
const int SIZE = 64;
wchar_t wcs[SIZE];
wchar_t wcs[WCS_SIZE];
const char *ptr = str;
int length;
length = mbsrtowcs(wcs, (const char **)&ptr, SIZE, NULL);
length = mbsrtowcs(wcs, (const char **)&ptr, WCS_SIZE, NULL);
wcs[length] = L'\0';
/* for simplicity */
if (length > 1) {
return -1;
} else {
Expand Down Expand Up @@ -4194,7 +4199,7 @@ int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str)
}
return (int)(n * str_len);
}

#endif

/********************************************************
End of file "fort_utils.c"
Expand Down
11 changes: 7 additions & 4 deletions src/fort_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,9 @@ int snprint_n_strings(char *buf, size_t length, size_t n, const char *str)
// return (int)n;
//}

#if defined(FT_HAVE_WCHAR)
#define WCS_SIZE 64

int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str)
{
size_t str_len = strlen(str);
Expand All @@ -249,12 +252,12 @@ int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str)
if (*p <= 127)
p++;
else {
const int SIZE = 64;
wchar_t wcs[SIZE];
wchar_t wcs[WCS_SIZE];
const char *ptr = str;
int length;
length = mbsrtowcs(wcs, (const char **)&ptr, SIZE, NULL);
length = mbsrtowcs(wcs, (const char **)&ptr, WCS_SIZE, NULL);
wcs[length] = L'\0';
/* for simplicity */
if (length > 1) {
return -1;
} else {
Expand Down Expand Up @@ -296,4 +299,4 @@ int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str)
}
return (int)(n * str_len);
}

#endif
2 changes: 2 additions & 0 deletions src/fort_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,9 @@ size_t number_of_columns_in_format_wstring(const wchar_t *fmt);
/*int snprint_n_chars(char *buf, size_t length, size_t n, char ch);*/
/*int wsnprint_n_chars(wchar_t *buf, size_t length, size_t n, wchar_t ch);*/
int snprint_n_strings(char *buf, size_t length, size_t n, const char *str);
#if defined(FT_HAVE_WCHAR)
int wsnprint_n_string(wchar_t *buf, size_t length, size_t n, const char *str);
#endif


#define CHCK_RSLT_ADD_TO_WRITTEN(statement) \
Expand Down

0 comments on commit de6fa8a

Please sign in to comment.