static GLboolean test_combo(GLenum frontMode, GLenum backMode) { GLenum frontPrim = get_prim_mode(frontMode); GLenum backPrim = get_prim_mode(backMode); GLboolean pass = GL_TRUE; GLenum expectedPrims[4]; int i; /* Draw reference image */ glClear(GL_COLOR_BUFFER_BIT); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glDrawArrays(frontPrim, 0, 4); glDrawArrays(backPrim, 4, 4); glDrawArrays(frontPrim, 8, 4); glDrawArrays(backPrim, 12, 4); /* determine what kind of primitives were drawn */ for (i = 0; i < 4; i++) { bool err = false; expectedPrims[i] = identify_primitive(&Positions[4 * i], Colors[4 * i]); if (i & 1) { if (expectedPrims[i] != backMode) { err = true; } } else { if (expectedPrims[i] != frontMode) { err = true; } } if (err) { /* we didn't get the expected reference primitive */ fprintf(stderr, "%s: reference drawing failed for frontPrim=%s, backPrim=%s\n", TestName, get_mode_str(frontMode), get_mode_str(backMode)); return GL_FALSE; } } /* Draw test image */ glClear(GL_COLOR_BUFFER_BIT); glPolygonMode(GL_FRONT, frontMode); glPolygonMode(GL_BACK, backMode); glDrawArrays(GL_QUADS, 0, 16); /* check that these prims match the reference prims */ for (i = 0; i < 4; i++) { GLenum prim = identify_primitive(&Positions[4 * i], Colors[4 * i]); if (prim != expectedPrims[i]) { fprintf(stderr, "%s: glPolygonMode(front=%s, back=%s) failed\n", TestName, get_mode_str(frontMode), get_mode_str(backMode)); pass = GL_FALSE; } } piglit_present_results(); return pass; }
/* Returns string representation of file type. */ static var_t filetype_builtin(const call_info_t *call_info) { char *str_val = var_to_string(call_info->argv[0]); const int fnum = get_fnum(str_val); var_val_t var_val = { .string = "" }; free(str_val); if(fnum >= 0) { #ifndef _WIN32 const mode_t mode = curr_view->dir_entry[fnum].mode; var_val.const_string = get_mode_str(mode); #else const FileType type = curr_view->dir_entry[fnum].type; var_val.const_string = get_type_str(type); #endif } return var_new(VTYPE_STRING, var_val); } /* Returns file type from position or -1 if the position has wrong value. */ static int get_fnum(const char position[]) { if(strcmp(position, ".") == 0) { return curr_view->list_pos; } else { return -1; } }
// Handles the incomming CAN Packets // Each ID that deals with specific controllers a note is // given where that info came from. There could be a lot of overlap // and exceptions here. -- Craig void handle_pkt(int can, struct canfd_frame frame) { if(DEBUG) print_pkt(frame); switch(frame.can_id) { case 0x243: // EBCM / GM / Chevy Malibu 2006 switch(frame.data[1]) { case UDS_SID_TESTER_PRESENT: if(verbose > 1) plog("Received TesterPresent\n"); generic_OK_resp_to(can, frame, 0x643); break; case UDS_SID_GM_READ_DIAG_INFO: handle_gm_read_diag(can, frame); break; default: if(verbose) print_pkt(frame); if(verbose) plog("Unhandled mode/sid: %s\n", get_mode_str(frame)); break; } break; case 0x244: // Body Control Module / GM / Chevy Malibu 2006 if(frame.data[0] == 0x30) { // Flow control flow_control_push_to(can, 0x644); return; } switch(frame.data[1]) { case UDS_SID_TESTER_PRESENT: if(verbose > 1) plog("Received TesterPresent\n"); generic_OK_resp_to(can, frame, 0x644); break; case UDS_SID_GM_READ_DIAG_INFO: handle_gm_read_diag(can, frame); break; case UDS_SID_GM_READ_DATA_BY_ID: handle_gm_read_data_by_id(can, frame); break; case UDS_SID_GM_READ_DID_BY_ID: handle_gm_read_did_by_id(can, frame); break; default: if(verbose) print_pkt(frame); if(verbose) plog("Unhandled mode/sid: %s\n", get_mode_str(frame)); break; } break; case 0x24A: // Power Steering / GM / Chevy Malibu 2006 switch(frame.data[1]) { default: if(verbose) print_pkt(frame); if(verbose) plog("Unhandled mode/sid: %s\n", get_mode_str(frame)); break; } break; case 0x350: // Unsure. Seen RTRs to this when requesting VIN if (frame.can_id & CAN_RTR_FLAG) { if (verbose) plog("Received a RTR at ID %02X\n", frame.can_id); } break; case 0x710: // VCDS if(verbose) print_pkt(frame); handle_vcds_710(can, frame); break; case 0x7df: case 0x7e0: // Sometimes flow control comes here if(verbose) print_pkt(frame); if(frame.data[0] == 0x30 && gBufLengthRemaining > 0) flow_control_push(can); if(frame.data[0] == 0 || frame.len == 0) return; if(frame.data[0] > frame.len) return; switch (frame.data[1]) { case OBD_MODE_SHOW_CURRENT_DATA: handle_current_data(can, frame); break; case OBD_MODE_SHOW_FREEZE_FRAME: handle_freeze_frame(can, frame); break; case OBD_MODE_READ_DTC: handle_stored_codes(can, frame); break; case OBD_MODE_READ_PENDING_DTC: handle_pending_codes(can, frame); break; case OBD_MODE_VEHICLE_INFORMATION: handle_vehicle_info(can, frame); break; case OBD_MODE_READ_PERM_DTC: handle_perm_codes(can, frame); break; case UDS_SID_DIAGNOSTIC_CONTROL: // DSC handle_dsc(can, frame); break; case UDS_SID_READ_DATA_BY_ID: handle_read_data_by_id(can, frame); break; case UDS_SID_TESTER_PRESENT: if(verbose > 1) plog("Received TesterPresent\n"); generic_OK_resp(can, frame); break; case UDS_SID_GM_READ_DIAG_INFO: handle_gm_read_diag(can, frame); break; default: //if(verbose) plog("Unhandled mode/sid: %02X\n", frame.data[1]); if(verbose) plog("Unhandled mode/sid: %s\n", get_mode_str(frame)); break; } break; default: if (DEBUG) print_pkt(frame); if (DEBUG) plog("DEBUG: missed ID %02X\n", frame.can_id); break; } }
/* ** m_whois ** parv[0] = sender prefix ** parv[1] = nickname masklist */ DLLFUNC int m_whois(aClient *cptr, aClient *sptr, int parc, char *parv[]) { Membership *lp; anUser *user; aClient *acptr, *a2cptr; aChannel *chptr; char *nick, *tmp, *name; char *p = NULL; int found, len, mlen, cnt = 0; char querybuf[BUFSIZE]; if (IsServer(sptr)) return 0; if (parc < 2) { sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]); return 0; } if (parc > 2) { if (hunt_server(cptr, sptr, ":%s WHOIS %s :%s", 1, parc, parv) != HUNTED_ISME) return 0; parv[1] = parv[2]; } strcpy(querybuf, parv[1]); for (tmp = canonize(parv[1]); (nick = strtok_r(tmp, ",", &p)); tmp = NULL) { unsigned char invis, showchannel, member, wilds, hideoper; /* <- these are all boolean-alike */ if (++cnt > MAXTARGETS) break; found = 0; /* We do not support "WHOIS *" */ wilds = (index(nick, '?') || index(nick, '*')); if (wilds) continue; if ((acptr = find_client(nick, NULL))) { if (IsServer(acptr)) continue; /* * I'm always last :-) and acptr->next == NULL!! */ if (IsMe(acptr)) break; /* * 'Rules' established for sending a WHOIS reply: * - only send replies about common or public channels * the target user(s) are on; */ if (!IsPerson(acptr)) continue; user = acptr->user; name = (!*acptr->name) ? "?" : acptr->name; invis = acptr != sptr && IsInvisible(acptr); member = (user->channel) ? 1 : 0; a2cptr = find_server_quick(user->server); hideoper = 0; if (IsHideOper(acptr) && (acptr != sptr) && !IsAnOper(sptr)) hideoper = 1; if (IsWhois(acptr) && (sptr != acptr)) { sendnotice(acptr, "*** %s (%s@%s) did a /whois on you.", sptr->name, sptr->user->username, sptr->user->realhost); } sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name, parv[0], name, user->username, IsHidden(acptr) ? user->virthost : user->realhost, acptr->info); if (IsOper(sptr) || acptr == sptr) { char sno[512]; strcpy(sno, get_sno_str(acptr)); /* send the target user's modes */ sendto_one(sptr, rpl_str(RPL_WHOISMODES), me.name, parv[0], name, get_mode_str(acptr), sno[1] == 0 ? "" : sno); } if ((acptr == sptr) || IsAnOper(sptr)) { sendto_one(sptr, rpl_str(RPL_WHOISHOST), me.name, parv[0], acptr->name, (MyConnect(acptr) && strcmp(acptr->username, "unknown")) ? acptr->username : "******", user->realhost, user->ip_str ? user->ip_str : ""); } if (IsARegNick(acptr)) sendto_one(sptr, rpl_str(RPL_WHOISREGNICK), me.name, parv[0], name); found = 1; mlen = strlen(me.name) + strlen(parv[0]) + 10 + strlen(name); for (len = 0, *buf = '\0', lp = user->channel; lp; lp = lp->next) { chptr = lp->chptr; showchannel = 0; if (ShowChannel(sptr, chptr)) showchannel = 1; if (OPCanSeeSecret(sptr)) showchannel = 1; if ((acptr->umodes & UMODE_HIDEWHOIS) && !IsMember(sptr, chptr) && !IsAnOper(sptr)) showchannel = 0; if (IsServices(acptr) && !IsNetAdmin(sptr) && !IsSAdmin(sptr)) showchannel = 0; if (acptr == sptr) showchannel = 1; /* Hey, if you are editting here... don't forget to change the webtv w_whois ;p. */ if (showchannel) { long access; if (len + strlen(chptr->chname) > (size_t)BUFSIZE - 4 - mlen) { sendto_one(sptr, ":%s %d %s %s :%s", me.name, RPL_WHOISCHANNELS, parv[0], name, buf); *buf = '\0'; len = 0; } #ifdef SHOW_SECRET if (IsAnOper(sptr) #else if (IsNetAdmin(sptr) #endif && SecretChannel(chptr) && !IsMember(sptr, chptr)) *(buf + len++) = '?'; if (acptr->umodes & UMODE_HIDEWHOIS && !IsMember(sptr, chptr) && IsAnOper(sptr)) *(buf + len++) = '!'; access = get_access(acptr, chptr); if (!SupportNAMESX(sptr)) { #ifdef PREFIX_AQ if (access & CHFL_CHANOWNER) *(buf + len++) = '~'; else if (access & CHFL_CHANPROT) *(buf + len++) = '&'; else #endif if (access & CHFL_CHANOP) *(buf + len++) = '@'; else if (access & CHFL_HALFOP) *(buf + len++) = '%'; else if (access & CHFL_VOICE) *(buf + len++) = '+'; } else { #ifdef PREFIX_AQ if (access & CHFL_CHANOWNER) *(buf + len++) = '~'; if (access & CHFL_CHANPROT) *(buf + len++) = '&'; #endif if (access & CHFL_CHANOP) *(buf + len++) = '@'; if (access & CHFL_HALFOP) *(buf + len++) = '%'; if (access & CHFL_VOICE) *(buf + len++) = '+'; } if (len) *(buf + len) = '\0'; (void)strcpy(buf + len, chptr->chname); len += strlen(chptr->chname); (void)strcat(buf + len, " "); len++; } } if (buf[0] != '\0') sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS), me.name, parv[0], name, buf); if (!(IsULine(acptr) && !IsOper(sptr) && HIDE_ULINES)) sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name, parv[0], name, user->server, a2cptr ? a2cptr->info : "*Not On This Net*"); if (user->away) sendto_one(sptr, rpl_str(RPL_AWAY), me.name, parv[0], name, user->away); /* makesure they aren't +H (we'll also check before we display a helpop or IRCD Coder msg) -- codemastr */ if ((IsAnOper(acptr) || IsServices(acptr)) && !hideoper) { buf[0] = '\0'; if (IsNetAdmin(acptr)) strlcat(buf, "a Network Administrator", sizeof buf); else if (IsSAdmin(acptr)) strlcat(buf, "a Services Administrator", sizeof buf); else if (IsAdmin(acptr) && !IsCoAdmin(acptr)) strlcat(buf, "a Server Administrator", sizeof buf); else if (IsCoAdmin(acptr)) strlcat(buf, "a Co Administrator", sizeof buf); else if (IsServices(acptr)) strlcat(buf, "a Network Service", sizeof buf); else if (IsOper(acptr)) strlcat(buf, "an IRC Operator", sizeof buf); else strlcat(buf, "a Local IRC Operator", sizeof buf); if (buf[0]) { if (IsOper(sptr) && MyClient(acptr)) sendto_one(sptr, ":%s 313 %s %s :is %s (%s)", me.name, parv[0], name, buf, acptr->user->operlogin); else sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR), me.name, parv[0], name, buf); } } if (IsHelpOp(acptr) && !hideoper && !user->away) sendto_one(sptr, rpl_str(RPL_WHOISHELPOP), me.name, parv[0], name); if (acptr->umodes & UMODE_BOT) sendto_one(sptr, rpl_str(RPL_WHOISBOT), me.name, parv[0], name, ircnetwork); if (acptr->umodes & UMODE_SECURE) sendto_one(sptr, rpl_str(RPL_WHOISSECURE), me.name, parv[0], name, "is using a Secure Connection"); if (!BadPtr(user->swhois) && !hideoper) sendto_one(sptr, ":%s %d %s %s :%s", me.name, RPL_WHOISSPECIAL, parv[0], name, acptr->user->swhois); /* * display services account name if it's actually a services account name and * not a legacy timestamp. --nenolod */ if (!isdigit(*user->svid)) sendto_one(sptr, rpl_str(RPL_WHOISLOGGEDIN), me.name, parv[0], name, user->svid); /* * Umode +I hides an oper's idle time from regular users. * -Nath. */ if (MyConnect(acptr) && (IsAnOper(sptr) || !(acptr->umodes & UMODE_HIDLE))) { sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name, parv[0], name, TStime() - acptr->last, acptr->firsttime); } } if (!found) sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); } sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], querybuf); return 0; }