Changeset 4466e3e for lib/misc.c
- Timestamp:
- 2016-10-17T04:34:11Z (8 years ago)
- Branches:
- master
- Children:
- f95e606
- Parents:
- 399d65a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/misc.c
r399d65a r4466e3e 787 787 return string; 788 788 } 789 790 /* Returns a string that is exactly 'char_len' utf8 characters long (not bytes), 791 * padded to the right with spaces or truncated with the 'ellipsis' parameter 792 * if specified (can be NULL). 793 * Returns a newly allocated string, or NULL on invalid parameters. */ 794 char *str_pad_and_truncate(const char *string, long char_len, const char *ellipsis) 795 { 796 size_t string_len = strlen(string); 797 size_t ellipsis_len = (ellipsis) ? strlen(ellipsis) : 0; 798 long orig_len = g_utf8_strlen(string, -1); 799 800 g_return_val_if_fail(char_len > ellipsis_len, NULL); 801 802 if (orig_len > char_len) { 803 char *ret = g_malloc(string_len + 1); 804 g_utf8_strncpy(ret, string, char_len - ellipsis_len); 805 if (ellipsis) { 806 g_strlcat(ret, ellipsis, string_len); 807 } 808 return ret; 809 } else if (orig_len < char_len) { 810 return g_strdup_printf("%s%*s", string, (int) (char_len - orig_len), ""); 811 } else { 812 return g_strdup(string); 813 } 814 }
Note: See TracChangeset
for help on using the changeset viewer.