Exemple #1
0
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;
}
Exemple #2
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;
}