/* call-seq: * getgrnam(name) -> Group * * Returns information about the group with specified +name+, as found in * /etc/group. * * The information is returned as a Group struct. * * See the unix manpage for <code>getgrnam(3)</code> for more detail. * * === Example: * * Etc.getgrnam('users') * #=> #<struct Etc::Group name="users", passwd="x", gid=100, mem=["meta", "root"]> * */ static VALUE etc_getgrnam(VALUE obj, VALUE nam) { #ifdef HAVE_GETGRENT struct group *grp; SafeStringValue(nam); grp = getgrnam(RSTRING_PTR(nam)); if (grp == 0) rb_raise(rb_eArgError, "can't find group for %"PRIsVALUE, nam); return setup_group(grp); #else return Qnil; #endif }
/* Provides a convenient Ruby iterator which executes a block for each entry * in the /etc/group file. * * The code block is passed an Group struct. * * See ::getgrent above for details. * * Example: * * require 'etc' * * Etc.group {|g| * puts g.name + ": " + g.mem.join(', ') * } * */ static VALUE etc_group(VALUE obj) { #ifdef HAVE_GETGRENT struct group *grp; if (rb_block_given_p()) { each_group(); } else if (grp = getgrent()) { return setup_group(grp); } #endif return Qnil; }
/* call-seq: * getgrnam(name) -> Group * * Returns information about the group with specified +name+, as found in * /etc/group. * * The information is returned as a Group struct. * * See the unix manpage for <code>getgrnam(3)</code> for more detail. * * === Example: * * Etc.getgrnam('users') * #=> #<struct Etc::Group name="users", passwd="x", gid=100, mem=["meta", "root"]> * */ static VALUE etc_getgrnam(VALUE obj, VALUE nam) { #ifdef HAVE_GETGRENT struct group *grp; const char *p = StringValueCStr(nam); rb_check_safe_obj(nam); grp = getgrnam(p); if (grp == 0) rb_raise(rb_eArgError, "can't find group for %"PRIsVALUE, nam); return setup_group(grp); #else return Qnil; #endif }
/* Provides a convenient Ruby iterator which executes a block for each entry * in the /etc/group file. * * The code block is passed an Etc::Group struct; see getgrent above for * details. * * Example: * * require 'etc' * * Etc.group {|g| * puts g.name + ": " + g.mem.join(', ') * } * */ static VALUE etc_group(VALUE obj) { #ifdef HAVE_GETGRENT struct group *grp; rb_secure(4); if (rb_block_given_p()) { if (group_blocking) { rb_raise(rb_eRuntimeError, "parallel group iteration"); } group_blocking = Qtrue; rb_ensure(group_iterate, 0, group_ensure, 0); } if (grp = getgrent()) { return setup_group(grp); } #endif return Qnil; }
win_unicode_input::win_unicode_input(QWidget *parent, Qt::WFlags tipo, QPoint winpos) : QDialog(parent, tipo) { // Se questo QDialog viene creato con tipo == Qt::Dialog allora sono costretto ad avere il ? in alto a destra // Ciò forse è un bene perchè mi costringerà ad avere un minimo di help // Veder Qt::WindowContextHelpButtonHint per avere maggiori informazioni setWindowTitle(tr("Insert Character")); //setSizeGripEnabled(true); setModal(true); move(winpos); cw = new CharacterWidget(this); QGridLayout *layout = new QGridLayout(this); layout->addWidget(setup_group(),0,0); layout->addWidget(setup_list(),0,1); //layout->addLayout(setup_buttons(),1,0, TRUE, FALSE); layout->setSpacing(6); layout->setMargin(8); }
/* call-seq: * getgrgid(group_id) -> Group * * Returns information about the group with specified integer +group_id+, * as found in /etc/group. * * The information is returned as a Group struct. * * See the unix manpage for <code>getgrgid(3)</code> for more detail. * * === Example: * * Etc.getgrgid(100) * #=> #<struct Etc::Group name="users", passwd="x", gid=100, mem=["meta", "root"]> * */ static VALUE etc_getgrgid(int argc, VALUE *argv, VALUE obj) { #ifdef HAVE_GETGRENT VALUE id; gid_t gid; struct group *grp; if (rb_scan_args(argc, argv, "01", &id) == 1) { gid = NUM2GIDT(id); } else { gid = getgid(); } grp = getgrgid(gid); if (grp == 0) rb_raise(rb_eArgError, "can't find group for %d", (int)gid); return setup_group(grp); #else return Qnil; #endif }
int hl_groups_parse_config(hl_groups_ptr hl_groups) { int token, val; const char *name; int mono_attrs = UNSPECIFIED_COLOR, color_attrs = UNSPECIFIED_COLOR; int fg_color = UNSPECIFIED_COLOR, bg_color = UNSPECIFIED_COLOR; int key, attrs, color; const struct color_info *color_spec; enum hl_group_kind group_kind; const struct attr_pair *pair; enum { TERM, CTERM, FG, BG, IGNORE }; if (!hl_groups) return 1; /* First, get the "group", that is, the group. */ token = yylex(); if (token != IDENTIFIER) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Missing group name."); #endif return 1; } name = get_token(); val = get_hl_group_kind_from_name(name, &group_kind); if (val == -1) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Bad parameter name (\"%s\").", name); #endif return 1; } if (group_kind < 0) { /* Just ignore groups we don't know about (or "link", which is not * a group, but which could appear here too). */ return 0; } /* Now parse the settings for the group. */ /* At the end of each key/value(s) pair, "token" will be set to the *next* * token. That's because we have to deal with comma-separated lists. */ token = yylex(); while (1) { /* Get the next key. */ if (token == 0 || token == EOL) break; if (token != IDENTIFIER) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Bad parameter name (\"%s\").", get_token()); #endif return 1; } name = get_token(); /* What type of key is it? */ if (strcasecmp(name, "term") == 0) key = TERM; else if (strcasecmp(name, "cterm") == 0) key = CTERM; else if (strcasecmp(name, "ctermfg") == 0) key = FG; else if (strcasecmp(name, "ctermbg") == 0) key = BG; else key = IGNORE; /* A '=' must come next. */ if (yylex() != '=') { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Missing '=' in \"highlight\" command."); #endif return 1; } /* Process the settings. */ token = yylex(); switch (key) { case TERM: case CTERM: attrs = 0; while (1) { /* Add in the attribute. */ if (token != IDENTIFIER) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Bad attribute name: \"%s\".", get_token()); #endif return 1; } name = get_token(); pair = lookup_attr_pair_by_name(name); if (!pair) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Unknown attribute name"); #endif return 1; } if (pair->value == -1) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Unknown attribute name: \"%s\".", name); #endif return 1; } attrs |= pair->value; /* Are there more attributes? */ token = yylex(); if (token != ',') break; token = yylex(); } if (key == TERM) { if (mono_attrs == UNSPECIFIED_COLOR) mono_attrs = attrs; else mono_attrs |= attrs; } else { if (color_attrs == UNSPECIFIED_COLOR) color_attrs = attrs; else color_attrs |= attrs; } break; case FG: case BG: attrs = 0; switch (token) { case NUMBER: color = atoi(get_token()); break; case IDENTIFIER: name = get_token(); color_spec = color_spec_for_name(name); if (color_spec == NULL) { #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Unknown color: \"%s\".", name); #endif return 1; } if (hl_groups->more_colors) color = color_spec->nr16Color; else { color = color_spec->nr8Color; if (color_spec->nr8ForegroundBold) { if (color_attrs == UNSPECIFIED_COLOR) color_attrs = A_BOLD; else color_attrs |= A_BOLD; } } break; default: #ifdef LOG_HIGHLIGHT_COMMAND_ERRORS logger_write_pos(logger, __FILE__, __LINE__, "Bad token for color (\"%s\").", get_token()); #endif return 1; } if (key == FG) fg_color = color; else bg_color = color; token = yylex(); break; case IGNORE: default: /* Ignore the value(s) (potentially a comma-separated list). */ while (1) { if (token != IDENTIFIER && token != NUMBER) return 1; token = yylex(); if (token != ',') break; } break; } } val = setup_group(hl_groups, group_kind, mono_attrs, color_attrs, fg_color, bg_color); if (val == -1) { return 1; } return 0; }