Example #1
0
static void
convert_cat(String *cap, char *s, Config *c, int maxlen)
{
  int res;

  if (config_get_boolean(c, "/enfle/plugins/ui/normal/filename_code_conversion", &res)) {
    char **froms = config_get_list(c, "/enfle/plugins/ui/normal/filename_code_from", &res);
    char *to = config_get_str(c, "/enfle/plugins/ui/normal/filename_code_to");
    char *from;
    int i = 0;

    if (res && to) {
      while ((from = froms[i++])) {
	char *tmp;

	//debug_message_fnc("%s->%s: %s\n", from, to, s);
	if ((res = converter_convert(s, &tmp, strlen(s), from, to)) < 0)
	  continue;
	if (maxlen)
	  string_ncat(cap, tmp, maxlen);
	else
	  string_cat(cap, tmp);
	free(tmp);
	return;
      }
    }
  }

  if (maxlen > 0)
    string_ncat(cap, s, maxlen);
  else
    string_cat(cap, s);
}
Example #2
0
string_t *string_cat (string_t *dest, const char *src)
{
	if (!src) {
		return dest;
	}
	return string_ncat (dest, src, strlen (src));
}
Example #3
0
char *pkg_to_str (const char *target, void *pkg, printpkgfn f, const char *format)
{
	if (!format) return NULL;
	const char *c;
	string_t *ret = string_new();
	const char *ptr = format;
	const char *end = &(format[strlen(format)]);
	while ((c = strchr (ptr, '%'))) {
		if (&(c[1]) == end) {
			break;
		}
		if (c[1] == '%' ) {
			ret = string_ncat (ret, ptr, (c-ptr));
			ret = string_cat (ret, "%%");
		} else {
			const char *info = NULL;
			if (strchr (FORMAT_LOCAL_PKG, c[1])) {
				info = alpm_local_pkg_get_str (f(pkg, 'n'), c[1]);
			} else if (c[1] == 't') {
				info = target;
			} else {
				info = f (pkg, c[1]);
			}
			if (c != ptr) {
				ret = string_ncat (ret, ptr, (c-ptr));
			}
			if (info) {
				ret = string_cat (ret, info);
			} else {
				ret = string_cat (ret, "-");
			}
		}
		ptr = &(c[2]);
	}
	if (ptr != end) {
		ret = string_ncat (ret, ptr, (end - ptr));
	}
	return string_free2 (ret);
}