| | 171 | | | | void *(SV *o) | | | 172 | | | | { | | | 173 | | | | SV **sv; | | | 174 | | | | HV *hv; | | | 175 | | | | void *p; | | | 176 | | | | | | | 177 | | | | hv = hvref(o);
| | | 178 | | | | if (hv == NULL)
| | true | 179 | | | | return NULL;
| | | 180 | | | | | | | 181 | | | | sv = hv_fetch(hv, "", 6, 0);
| /usr/lib/perl5/5.10.0/i586-linux-thread-multi/CORE/embed.h | | 2567 | #define hv_common_key_len(a,b,c,d,e,f) Perl_hv_common_key_len(aTHX_ a,b,c,d,e,f) |
| | | 182 | | | | if (sv == NULL)
| | | 183 | | | | croak("variable is damaged");
| | | 184 | | | | p = GINT_TO_POINTER(SvIV(*sv));
| | | 185 | | | | return p; | | irssi_ref_object$return <= 4095 | 186 | | | | } |
| | 435 | | | | char *theme_format_expand_data(THEME_REC *theme, const char **format, | | | 436 | | | | char default_fg, char default_bg, | | | 437 | | | | char *save_last_fg, char *save_last_bg, | | | 438 | | | | int flags) | | | 439 | | | | { | | | 440 | | | | GString *str; | | | 441 | | | | char *ret, *abstract; | | | 442 | | | | char last_fg, last_bg; | | | 443 | | | | int recurse_flags; | | | 444 | | | | | | | 445 | | | | last_fg = default_fg; | | | 446 | | | | last_bg = default_bg; | | | 447 | | | | recurse_flags = flags & EXPAND_FLAG_RECURSIVE_MASK;
| | | 448 | | | | | | | 449 | | | | str = g_string_new(NULL);
| | | 450 | | | | while (**format != '\0') { | | | 451 | | | | if ((flags & EXPAND_FLAG_ROOT) == 0 && **format == '}') {
| | | 452 | | | | | | | 453 | | | | (*format)++; | | | 454 | | | | break; | | | 455 | | | | } | | | 456 | | | | | | | 457 | | | | if (**format != '{') { | | | 458 | | | | if ((flags & EXPAND_FLAG_LASTCOLOR_ARG) &&
| | | 459 | | | | **format == '$' && (*format)[1] == '0') { | | | 460 | | | | | | | 461 | | | | | | | 462 | | | | if (save_last_fg != NULL) {
| | | 463 | | | | *save_last_fg = last_fg; | | | 464 | | | | save_last_fg = NULL;
| | | 465 | | | | } | | | 466 | | | | if (save_last_bg != NULL) {
| | | 467 | | | | *save_last_bg = last_bg; | | | 468 | | | | save_last_bg = NULL;
| | | 469 | | | | } | | | 470 | | | | } | | | 471 | | | | | | | 472 | | | | theme_format_append_next(theme, str, format, | | | 473 | | | | default_fg, default_bg, | | | 474 | | | | &last_fg, &last_bg, |
| | 172 | | | | | | static void theme_format_append_next(THEME_REC *theme, GString *str, | | | 173 | | | | | | const char **format, | | | 174 | | | | | | char default_fg, char default_bg, | | | 175 | | | | | | char *last_fg, char *last_bg, | | | 176 | | | | | | int flags) | | | 177 | | | | | | { | | | 178 | | | | | | int index; | | | 179 | | | | | | unsigned char chr; | | | 180 | | | | | | | | | 181 | | | | | | chr = **format; | | | 182 | | | | | | if ((chr == '$' || chr == '%') && | | | 183 | | | | | | (*format)[1] == '\0') { | | | 184 | | | | | | | | | 185 | | | | | | g_string_append_c(str, chr);
| | | 186 | | | | | | (*format)++; | | | 187 | | | | | | return; | | | 188 | | | | | | } | | | 189 | | | | | | | | | 190 | | | | | | if (chr == '$') { | | | 191 | | | | | | | | | 192 | | | | | | | | | 193 | | | | | | theme_format_append_variable(str, format); | | | 194 | | | | | | return; | | | 195 | | | | | | } | | | 196 | | | | | | | | | 197 | | | | | | if (**format == '%') { | | | 198 | | | | | | | | | 199 | | | | | | (*format)++; | | | 200 | | | | | | if (**format != '{' && **format != '}') { | | | 201 | | | | | | chr = **format; | | | 202 | | | | | | if (**format == 'n') { | | | 203 | | | | | | | | | 204 | | | | | | g_string_append(str, "%n"); | | | 205 | | | | | | | | | 206 | | | | | | if (default_bg != 'n') { | | | 207 | | | | | | g_string_append_c(str, '%');
| | | 208 | | | | | | g_string_append_c(str, default_bg);
| | | 209 | | | | | | } | | | 210 | | | | | | if (default_fg != 'n') { | | | | | | | | | ... | | | 221 | | | | | | *last_bg = chr; | | | 222 | | | | | | g_string_append_c(str, '%');
| | | 223 | | | | | | g_string_append_c(str, chr);
| | | 224 | | | | | | } | | | 225 | | | | | | (*format)++; | | | 226 | | | | | | return; | | | 227 | | | | | | } | | | 228 | | | | | | | | | 229 | | | | | | | | | 230 | | | | | | | | | 231 | | | | | | g_string_append_c(str, '%');
| | | 232 | | | | | | chr = **format; | | | 233 | | | | | | } | | | 234 | | | | | | | | | 235 | | | | | | index = (flags & EXPAND_FLAG_IGNORE_REPLACES) ? -1 :
| | theme <= 4095 | 236 | | | | | | theme->replace_keys[(int) (unsigned char) chr]; |
|