diff options
Diffstat (limited to 'hardinfo2')
| -rw-r--r-- | hardinfo2/util.c | 33 | 
1 files changed, 33 insertions, 0 deletions
diff --git a/hardinfo2/util.c b/hardinfo2/util.c index 32c93b49..0edd21c2 100644 --- a/hardinfo2/util.c +++ b/hardinfo2/util.c @@ -1347,3 +1347,36 @@ gboolean hardinfo_spawn_command_line_sync(const gchar *command_line,      return g_spawn_command_line_sync(command_line, standard_output,                                       standard_error, exit_status, error);  } + + +#define MAX_STRWRAP 10000 +gchar *strwrap(const gchar *st, size_t w, gchar delimiter) +{ +  gchar retst[MAX_STRWRAP]; +  gchar *rst=retst; +  const gchar *ist=st; +  int first=1; +  size_t len; + +  if(!st) return NULL; + +  while(((len=strlen(ist)) > 0) && (((rst-retst)+w+2)<MAX_STRWRAP)){ +    if(len>w) len=w; +    while((len>1) && (*(ist+len)!=0)&&(*(ist+len)!=delimiter)) len--; +    if(len==1) {len=strlen(ist);if(len>w) len=w;} +    if(!first) { +      *rst++=13; +      strncpy(rst,ist,len); +    }else{ +      strncpy(rst,ist,len); +    } +    rst+=len; +    ist+=len; +    if(*ist==delimiter) ist++; +    if(*ist==0x20) ist++; +    first=0; +  } +  *rst=0; + +  return g_strdup(retst); +}  | 
