static int renumber_block (int argc, char **argv, Coord x, Coord y) { char num_buf[15]; int old_base, new_base; if (argc < 2) { Message("Usage: RenumberBlock oldnum newnum"); return 1; } old_base = atoi (argv[0]); new_base = atoi (argv[1]); SET_FLAG (NAMEONPCBFLAG, PCB); ELEMENT_LOOP (PCB->Data); { char *refdes_split, *cp; char *old_ref, *new_ref; int num; if (!TEST_FLAG (SELECTEDFLAG, element)) continue; old_ref = element->Name[1].TextString; for (refdes_split=cp=old_ref; *cp; cp++) if (!isdigit(*cp)) refdes_split = cp+1; num = atoi (refdes_split); num += (new_base - old_base); sprintf(num_buf, "%d" ,num); new_ref = (char *) malloc (refdes_split - old_ref + strlen(num_buf) + 1); memcpy (new_ref, old_ref, refdes_split - old_ref); strcpy (new_ref + (refdes_split - old_ref), num_buf); AddObjectToChangeNameUndoList (ELEMENT_TYPE, NULL, NULL, element, NAMEONPCB_NAME (element)); ChangeObjectName (ELEMENT_TYPE, element, NULL, NULL, new_ref); } END_LOOP; IncrementUndoSerialNumber (); return 0; }
void *QueryInputAndChangeObjectName( int Type, void *Ptr1, void *Ptr2, void *Ptr3 ) { int eax; int ecx; int edx; char *name; char msg[513]; if ( Type != 1024 ) { switch ( Type ) { case 2: break; case 4: gui->prompt_for( "Linename:", ((char*)Ptr2)[84] == 0 ? ((char*)Ptr2)[84] : "" ); break; case 1: gui->prompt_for( "Vianame:", ((char*)Ptr2)[60] == 0 ? ((char*)Ptr2)[60] : "" ); break; case 256: __sprintf_chk( msg, 1, 513, "%s Pin Name:", ((char*)Ptr2)[64] == 0 ? &((char*)Ptr2)[64] : "" ); ebp( msg[0], ((char*)Ptr2)[88] == 0 ? ((char*)Ptr2)[88] : "", gui->prompt_for ); break; case 512: __sprintf_chk( msg, 1, 513, "%s Pad Name:", ((char*)Ptr2)[92] == 0 ? &((char*)Ptr2)[92] : "" ); ebp( msg[0], ((char*)Ptr2)[88] == 0 ? ((char*)Ptr2)[88] : "", gui->prompt_for ); break; case 16: gui->prompt_for( "Enter text:", ((char*)Ptr2)[52] == 0 ? ((char*)Ptr2)[52] : "" ); break; default: Ptr3 = 0; if ( 0 ^ 0 ) { __stack_chk_fail( ); } return Ptr3; break; } if ( name == 0 ) continue; else { /* phantom */ char *old; if ( ChangeObjectName( Type, Ptr1, Ptr2, Ptr3, name ) != -1 ) { AddObjectToChangeNameUndoList( Type, Ptr1, Ptr2, Ptr3, (char*)ChangeObjectName( Type, Ptr1, Ptr2, Ptr3, name ) ); IncrementUndoSerialNumber( ); } Draw( ); } } else { Ptr3 = Ptr1; Ptr2 = Ptr1; } if ( ((char*)Ptr2)[88] == 0 ) goto B22; else { } B22:; ebx( "Elementname:", ((char*)Ptr2)[88], PCB->Flags.f & 64, Ptr1 ); Type = 2; }