return getline(lineptr, n, fp);
#endif
}
+
+char * hb_strndup(const char * src, size_t len)
+{
+#ifdef SYS_MINGW
+ char * result, * end;
+
+ if (src == NULL)
+ {
+ return NULL;
+ }
+
+ end = memchr(src, 0, len);
+ if (end != NULL)
+ {
+ len = end - src;
+ }
+
+ result = malloc(len + 1);
+ if (result == NULL)
+ {
+ return NULL;
+ }
+ memcpy(result, src, len);
+ result[len] = 0;
+
+ return result;
+#else
+ return strndup(src, len);
+#endif
+}
FILE * hb_fopen(const char *path, const char *mode);
char * hb_strr_dir_sep(const char *path);
+/************************************************************************
+ * String utils
+ ***********************************************************************/
+char * hb_strndup(const char * src, size_t len);
+
/************************************************************************
* File utils
***********************************************************************/
if (ssa[pos] == 'r')
{
// Style reset
- char * style = strndup(ssa + pos + 1, end - (pos + 1));
+ char * style = hb_strndup(ssa + pos + 1, end - (pos + 1));
ssa_style_set(ctx, style);
free(style);
}
char * end = strchr(start, ',');
if (end != NULL)
{
- result = strndup(start, end - start);
+ result = hb_strndup(start, end - start);
*pos = end + 1;
}
else
}
if (eol != NULL)
{
- return strndup(str, eol - str);
+ return hb_strndup(str, eol - str);
}
else
{