コード例 #1
0
ファイル: builder.c プロジェクト: XVilka/owp4v1copy
static void BackupLog( const char *log_name, unsigned copies )
{
    char        buff[_MAX_PATH2];
    char        *drive;
    char        *dir;
    char        *fn;
    char        *ext;
    char        old_name[_MAX_PATH];
    char        new_name[_MAX_PATH];
    char        temp_ext[5];

    if( copies > MAX_BACKUP )
        copies = MAX_BACKUP;
    if( copies == 0 ) {
        remove( log_name );
        return;
    }
    _splitpath2( log_name, buff, &drive, &dir, &fn, &ext );
    while( copies != 0 ) {
        PutNumber( ext, temp_ext, copies );
        _makepath( new_name, drive, dir, fn, temp_ext );
        remove( new_name );
        if( copies == 1 ) {
            strcpy( old_name, log_name );
        } else {
            PutNumber( ext, temp_ext, copies - 1 );
            _makepath( old_name, drive, dir, fn, temp_ext );
        }
        rename( old_name, new_name );
        --copies;
    }
}
コード例 #2
0
ファイル: RomanNumber.cpp プロジェクト: greencashew/oop
string RomanNumber::ArabToRoman(int value)
{
    if(value>4999) return "This number isn't exists.";
    string Roman = "";
    int temp = 0;
    int additional = 0;
    temp = value/1000;
    if(value==0) return "ZERO";
    for (int i = 0; i < temp; i++)
    {
        Roman = Roman + "M";
    }
    temp = value%1000;
    additional = temp/100;
    if (additional > 0)
    {
        Roman = Roman + PutNumber (additional, "C","D","M");
    }
    temp = temp%100;
    additional = temp/10;
    if (additional > 0)
    {
        Roman = Roman + PutNumber (additional, "X","L","C");
    }
    temp = temp%10;
    if (temp > 0)
    {
        Roman = Roman + PutNumber (temp, "I","V","X");
    }
    return Roman;
}
コード例 #3
0
TEST_F(NetworkTableTest, LeadingSlash) {
  auto nt = NetworkTable::GetTable("leadingslash");
  auto nt2 = NetworkTable::GetTable("/leadingslash");
  ASSERT_FALSE(nt->ContainsKey("testkey"));
  nt2->PutNumber("testkey", 5);
  ASSERT_TRUE(nt->ContainsKey("testkey"));
}
コード例 #4
0
TEST_F(NetworkTableTest, EmptyOrNoSlash) {
  auto inst = nt::NetworkTableInstance::Create();
  auto nt = inst.GetTable("/");
  auto nt2 = inst.GetTable("");
  ASSERT_FALSE(nt->ContainsKey("testkey"));
  nt2->PutNumber("testkey", 5);
  ASSERT_TRUE(nt->ContainsKey("testkey"));
  ASSERT_TRUE(inst.GetEntry("/testkey").Exists());
}
コード例 #5
0
TEST_F(NetworkTableTest, ContainsKey) {
  auto inst = nt::NetworkTableInstance::Create();
  auto nt = inst.GetTable("containskey");
  ASSERT_FALSE(nt->ContainsKey("testkey"));
  nt->PutNumber("testkey", 5);
  ASSERT_TRUE(nt->ContainsKey("testkey"));
  ASSERT_TRUE(inst.GetEntry("/containskey/testkey").Exists());
  ASSERT_FALSE(inst.GetEntry("containskey/testkey").Exists());
}
コード例 #6
0
ファイル: main.c プロジェクト: Csatacsibe/Vadalarm_quad
void recieve (){
		uint8_t temp=0;
			HAL_UART_Init(&huart1);
		HAL_GPIO_TogglePin(Kimenet_GPIO_Port,Kimenet_Pin);
	HAL_UART_Receive(&huart1,&temp,1,3000);

	PutNumber(temp);
	PutString("\n");
	
}
コード例 #7
0
ファイル: main.c プロジェクト: Csatacsibe/Vadalarm_quad
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtcc)
{

		//HAL_GPIO_TogglePin(Kimenet_GPIO_Port,Kimenet_Pin);
	   MX_USART1_UART_Init();
	PutString("--------\n");	
	
	
				HAL_RTC_GetTime(&hrtc,&sTim,RTC_FORMAT_BIN); 
		  HAL_RTC_GetDate(&hrtc, &sDat, RTC_FORMAT_BIN);
		
		PutNumber((uint32_t)sTim.Hours);
		
		PutString(":");
		PutNumber((uint32_t)sTim.Minutes);
	
		PutString(":");
		PutNumber((uint32_t)sTim.Seconds);
			PutString("\n");
			PutString("--------\n");	

}
コード例 #8
0
ファイル: Bmview.cpp プロジェクト: Stas777/Exsylor
//------------------------------------------------------------
void CBMRegView::OnDrawRow(CDC* pDC, int nRow, int y)
{ CBrush brushBackground;
  COLORREF crNewBack,crNewText = RGB(128,0,0), crOldText, crOldBackground = 0;
  CFont FontNew,*FontOld;
  int width,i,Pos,n,k;
  char buf[128];
  CSize  cs;
  CSample* pReg;
  TEXTMETRIC tm;
  CScriptDoc* pDoc = GetDocument();

  pDC->GetTextMetrics(&tm);
  width = tm.tmAveCharWidth;  //Ширина одного символа
  FontNew.CreateFontIndirect(&lf);
  FontOld = pDC->SelectObject((CFont*)&FontNew);
  if ( !pDoc->m_RowMask.IsEmpty() && pDoc->m_RowMask.GetBitAt(nRow))  crNewBack =RGB(224,224,0);
  else                            crNewBack =::GetSysColor(COLOR_WINDOW);

  brushBackground.CreateSolidBrush(crNewBack);

  crOldBackground = pDC->SetBkColor(crNewBack); // Установить текущей
  Pos=40;
  CRect rectSelection;
  pDC->GetClipBox(&rectSelection);
  rectSelection.top = y;  rectSelection.bottom = y + m_nRowHeight+2;
  pDC->FillRect(&rectSelection, &brushBackground); // Всю строку
  crOldText = pDC->SetTextColor(crNewText);      // Красный текст
  PutNumber(pDC,nRow,y,FontOld,&FontNew,&lf);
  
  pDC->MoveTo(Pos-3,y); pDC->LineTo(Pos-3,rectSelection.bottom);
  pReg = pDoc->m_pReguls.GetAt(nRow);

  for (i=0; i<(int)pDoc->m_nDom; i++) {
    if ((i&1)==0) pDC->SetTextColor(crOldText);      // Черный текст
    for (k=n=0; n<(int)pDoc->m_DomVal[i]; n++)
      k |= pReg->m_Values.GetAt(pDoc->m_DomAdr[i]+n);
    for (n=0; n<(int)pDoc->m_DomVal[i]; n++) {
      if (k&2)  buf[n]= (pReg->m_Values.GetAt(pDoc->m_DomAdr[i]+n)==0) ? '1':Symbol0;
      else      buf[n]= pReg->m_Values.GetAt(pDoc->m_DomAdr[i]+n)      ? '1':Symbol0;
    }
    buf[n]='\0';
    cs  = pDC->GetTextExtent(buf,pDoc->m_DomVal[i]);
    pDC->TextOut(Pos, y, buf,pDoc->m_DomVal[i]);
    Pos+=cs.cx+5;
    pDC->MoveTo(Pos-3,y); pDC->LineTo(Pos-3,rectSelection.bottom);
    if ((i&1)==0) pDC->SetTextColor(crNewText);      // Красный текст
  }
  pDC->SetBkColor(crOldBackground); pDC->SetTextColor(crOldText);
 pDC->SelectObject((CFont*)FontOld); FontNew.DeleteObject();
}
コード例 #9
0
ファイル: main.c プロジェクト: Csatacsibe/Vadalarm_quad
uint16_t temperature(){
		float									temp,Vdd_voltage,temp30,sense,x=0.8058608;
		int32_t                			f**k,vrefint_data; 												//VREFINT measured value
		int16_t											vrefint_cal_temp,vrefint_cal_int; 				//VREFINT calibration value
		ADC_ChannelConfTypeDef        sConfig;

		vrefint_cal_temp= *((int32_t*)0x1FFFF7B8);						
		vrefint_cal_int= *((int32_t*)0x1FFFF7BA);	
		ADC->CCR |= ADC_CCR_TSEN;
		
		HAL_Delay(50);
	//MX_ADC_Init();
	//HAL_ADC_Init(&hadc);
		HAL_ADCEx_Calibration_Start(&hadc);
	
		sConfig.Channel      = ADC_CHANNEL_VREFINT;
		sConfig.Rank         = ADC_RANK_CHANNEL_NUMBER;
		sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5 ;		
		hadc.Instance->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL17);
		HAL_ADC_ConfigChannel(&hadc,&sConfig);
		
		HAL_ADC_Start(&hadc);
		HAL_ADC_PollForConversion(&hadc,1000);
		vrefint_data = (int32_t)HAL_ADC_GetValue(&hadc);								//vint beolvasott digitális érték
		HAL_ADC_Stop(&hadc);

		sConfig.Channel      =  ADC_CHANNEL_TEMPSENSOR;
		hadc.Instance->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL16);		
		HAL_ADC_ConfigChannel(&hadc,&sConfig);	
		
		HAL_ADC_Start(&hadc);
		HAL_ADC_PollForConversion(&hadc,1000);
		f**k = (int32_t)HAL_ADC_GetValue(&hadc);										//temerature sensor
		HAL_ADC_Stop(&hadc);

		sense=(float)((float)vrefint_cal_int*(float)f**k);
		sense=(float)(sense/(float)vrefint_data);
		sense=(float)(sense*x);
		temp30=(3300*vrefint_cal_temp)/4095;
		temp=temp30-sense+30;
		PutString("Temperature:");
		PutNumber((uint32_t)temp);
		PutString("\n");

	//	HAL_ADC_DeInit(&hadc);
		return (uint16_t)temp;
}
コード例 #10
0
ファイル: main.c プロジェクト: Csatacsibe/Vadalarm_quad
	uint16_t voltage_read(uint32_t channel, float voltage_div ){
		//TIM_CHANNEL_2 -> Battery voltage, div=2.0
		
		//ADC_voltage = (Vcal*vrefint_cal* ADC_data) / (vrefint_data*FULL_SCALE)
		
		float												voltage,x=0.80586;												//x=3300/4095
		uint32_t                			aResult;						//a mért csdatorna értéke
		uint16_t											vrefint_cal; 				//VREFINT calibration value,gyári kalibrációs érték(3,3V on)  vrefint
		uint32_t 											vrefint_data; 			//VREFINT measured value, tényleges vrefint
		ADC->CCR |= ADC_CCR_VREFEN;
		vrefint_cal= *((uint16_t*)VREFINT_CAL_ADDR);
		ADC_ChannelConfTypeDef        sConfig;

		//MX_ADC_Init();
		//HAL_ADC_Init(&hadc);

		sConfig.Channel      = ADC_CHANNEL_VREFINT;
		sConfig.Rank         = ADC_RANK_CHANNEL_NUMBER;
		sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;		
		hadc.Instance->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL17);	
		HAL_ADC_ConfigChannel(&hadc,&sConfig);
	
		HAL_ADCEx_Calibration_Start(&hadc);
		
		HAL_ADC_Start(&hadc);
		HAL_ADC_PollForConversion(&hadc,1000);
		vrefint_data = HAL_ADC_GetValue(&hadc);								//vrefint beolvasott digitális érték
		HAL_ADC_Stop(&hadc);

		hadc.Instance->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL2);	
		sConfig.Channel      = channel;								
		HAL_ADC_ConfigChannel(&hadc,&sConfig);		
		
		HAL_ADC_Start(&hadc);	
		HAL_ADC_PollForConversion(&hadc,100);
		aResult = HAL_ADC_GetValue(&hadc);										//aksifesz beolvasás
		HAL_ADC_Stop(&hadc);
		
		voltage = (((float)vrefint_cal/(float)vrefint_data))* (float)aResult*x;		//feszültség kiszámolása mV-ban
		voltage *=voltage_div;

		PutString("voltage=");
		PutNumber((uint32_t)voltage);	
		PutString("mV\n");
		return (uint16_t)voltage;
	}
コード例 #11
0
ファイル: main.c プロジェクト: Csatacsibe/Vadalarm_quad
uint16_t battery_voltage_read(){												//PA2 lábon, chanel_2
		float												voltage,x=0.80586;
		uint32_t                			aResult;
		uint16_t											vrefint_cal; 				//VREFINT calibration value
		uint32_t 											vrefint_data; 			//VREFINT measured value
		ADC->CCR |= ADC_CCR_VREFEN;
		vrefint_cal= *((uint16_t*)VREFINT_CAL_ADDR);
		ADC_ChannelConfTypeDef        sConfig;

		//MX_ADC_Init();
		//HAL_ADC_Init(&hadc);

		sConfig.Channel      = ADC_CHANNEL_VREFINT;
		sConfig.Rank         = ADC_RANK_CHANNEL_NUMBER;
		sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;		
		hadc.Instance->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL17);	
		HAL_ADC_ConfigChannel(&hadc,&sConfig);
	
		HAL_ADCEx_Calibration_Start(&hadc);
		
		HAL_ADC_Start(&hadc);
		HAL_ADC_PollForConversion(&hadc,1000);
		vrefint_data = HAL_ADC_GetValue(&hadc);								//vrefint beolvasott digitális érték
		HAL_ADC_Stop(&hadc);

		hadc.Instance->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL2);	
		sConfig.Channel      = ADC_CHANNEL_2;									//aksifesz bemenet 
		HAL_ADC_ConfigChannel(&hadc,&sConfig);		
		
		HAL_ADC_Start(&hadc);	
		HAL_ADC_PollForConversion(&hadc,100);
		aResult = HAL_ADC_GetValue(&hadc);										//aksifesz beolvasás
		HAL_ADC_Stop(&hadc);
		
		voltage = (((float)vrefint_cal/(float)vrefint_data))* (float)aResult*x;		//feszültség kiszámolása mV-ban
		voltage *=2;

		PutString("battery voltage=");
		PutNumber((uint32_t)voltage);	
		PutString("mV");
		PutString("\n");

	//	HAL_ADC_DeInit(&hadc);
		return (uint32_t)voltage;
	}
コード例 #12
0
ファイル: Bmview.cpp プロジェクト: Stas777/Exsylor
//------------------------------------------------------------
void CBMEditView::OnDrawRow(CDC* pDC, int nRow, int y)
{ CBrush brushBackground;
  COLORREF crNewBack,crNewText = RGB(128,0,0), crOldText, crOldBackground = 0;
  CFont FontNew,*FontOld;
  int width,i,Pos,n;
  char buf[128];
  CSize  cs;
  CSample* pSmp;
  TEXTMETRIC tm;
  CScriptDoc* pDoc = GetDocument();

  pDC->GetTextMetrics(&tm);
  width = tm.tmAveCharWidth;  //Ширина одного символа
  FontNew.CreateFontIndirect(&lf);
  FontOld = pDC->SelectObject((CFont*)&FontNew);
  crNewBack =::GetSysColor(COLOR_WINDOW);
  brushBackground.CreateSolidBrush(crNewBack);  //Белая кисть

  crOldBackground = pDC->SetBkColor(crNewBack); // Установить текущей белую
  CRect rectSelection;
  pDC->GetClipBox(&rectSelection);
  rectSelection.top = y;  rectSelection.bottom = y + m_nRowHeight;
  pDC->FillRect(&rectSelection, &brushBackground); // Всю строку сделать белой
  crOldText = pDC->SetTextColor(crNewText);      // Красный текст

  if (pDoc->m_ActSmp==nRow)  { Draw(pDC,6,23, y); }  // Active
  PutNumber(pDC,nRow,y,FontOld,&FontNew,&lf);
  Pos=40;
  pDC->MoveTo(Pos-3,y); pDC->LineTo(Pos-3,rectSelection.bottom);

  pSmp = pDoc->m_pSamples.GetAt(nRow);
  for (i=0; i<pDoc->m_nDom; i++) {
    if ((i&1)==0) pDC->SetTextColor(crOldText);      // Черный текст
    for (n=0; n<(int)pDoc->m_DomVal[i]; n++)
      buf[n]= pSmp->m_Values.GetAt(pDoc->m_DomAdr[i]+n) ? '1':Symbol0;
    buf[n]='\0';
    cs  = pDC->GetTextExtent(buf,pDoc->m_DomVal[i]);
    pDC->TextOut(Pos, y, buf,pDoc->m_DomVal[i]);
    Pos+=cs.cx+5;
    pDC->MoveTo(Pos-3,y); pDC->LineTo(Pos-3,rectSelection.bottom);
    if ((i&1)==0) pDC->SetTextColor(crNewText);      // Красный текст
  }
 pDC->SetBkColor(crOldBackground);   pDC->SetTextColor(crOldText);
 pDC->SelectObject((CFont*)FontOld); FontNew.DeleteObject();
}
コード例 #13
0
/**
 * {@inheritDoc}
 */
void ADIS16448_IMU::UpdateTable() {
  auto table = GetTable();
  if (table) {
    table->PutNumber("Value", GetAngle());
    table->PutNumber("Pitch", GetPitch());
    table->PutNumber("Roll", GetRoll());
    table->PutNumber("Yaw", GetYaw());
    table->PutNumber("AccelX", GetAccelX());
    table->PutNumber("AccelY", GetAccelY());
    table->PutNumber("AccelZ", GetAccelZ());
    table->PutNumber("AngleX", GetAngleX());
    table->PutNumber("AngleY", GetAngleY());
    table->PutNumber("AngleZ", GetAngleZ());
  }
}
コード例 #14
0
ファイル: main.c プロジェクト: Csatacsibe/Vadalarm_quad
int main(void)
{
int i=5000;
	
uint8_t ultrasoundEnableFlag;
 uint16_t voltage; 
	/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* Configure the system clock */
  SystemClock_Config_8MHz();
  //__HAL_RCC_PWR_CLK_ENABLE();
  /* Initialize all configured peripherals */
	
	MX_GPIO_Init();
			HAL_GPIO_WritePin( DCDC_EN_GPIO_Port , DCDC_EN_Pin , 0);								//
			HAL_GPIO_WritePin( DCDC_PWR_GPIO_Port , DCDC_PWR_Pin , 0 );									//open drain kimenet,pch fet,
  MX_ADC_Init();
  //MX_I2C1_Init(); 
	 //MX_TIM3_Init();
	 MX_USART1_UART_Init();

		GPIO_TIM3_OFF();
	//HAL_Delay(100);
		 MX_RTC_Init(); 
 /* Enable Power Clock */
  //__HAL_RCC_PWR_CLK_ENABLE();
	
		 uartTester();
		//	GPIO_TIM3_OFF();
		

//Feszültseg ellenörzése,sippogás-----------------------------------------------------
voltage=voltage_read(ADC_CHANNEL_2,2);
if(Full<voltage)
	batteryLevel=3;

if(Medium < voltage && voltage<= Full)
	batteryLevel=2;

if(Medium >= voltage)
	batteryLevel=1;

HAL_Delay(1000);
beeps(batteryLevel,1);
PutString("Software version 2016.07.26.\n");
PutString("batteryLevel: ");
			PutNumber(batteryLevel);
			PutString("\n");

while(1){
	//Feszültseg ellenörzése, paraméterek beállítása,fesz fvében------------------------
	voltage=voltage_read(ADC_CHANNEL_2,2);
	if(Low > voltage){
			if(UltraLow > voltage){
				voltage=voltage_read(ADC_CHANNEL_2,2);
				if(UltraLow > voltage){
					HAL_GPIO_WritePin( DCDC_PWR_GPIO_Port , DCDC_PWR_Pin , 1 );									//open drain kimenet,pch fet,
				HAL_PWR_EnterSTANDBYMode();
				}
			}
			ultrasoundEnableFlag=0;
			sleepNum=LowVoltSleep;
	}else{
			ultrasoundEnableFlag=1;
			sleepNum= linear(sleepNumMax,sleepNumMin, voltageMin,voltageMax,voltage);											
			soundNum=	linear(soundNumMin,soundNumMax,voltageMin,voltageMax,voltage);
			sounDelay=sDelay;
	}
			PutString("sleepNum");
			PutNumber(sleepNum);
			PutString("\n");
				PutString("soundNum");
			PutNumber(soundNum);
			PutString("\n");
	
	//Ultrahang generálás---------------------------------------------------------------
	
	if(ultrasoundEnableFlag){
		
		PutString("ultrasound(1)\n ");
			ultrasound(1);		
		
	}

	//Sleep-----------------------------------------------------------------------------
		
		//	HAL_ADC_MspDeInit(&hadc);
	HAL_Delay(10);
PutString("sleep!\n");


	
	HAL_NVIC_SetPriority(RTC_IRQn, 0, 0);
				HAL_NVIC_EnableIRQ(RTC_IRQn);
	

	
	for(uint8_t e=0 ; e < sleepNum ; e++){

			
			HAL_RTC_GetTime(&hrtc,&sTim,RTC_FORMAT_BIN); 
		  HAL_RTC_GetDate(&hrtc, &sDat, RTC_FORMAT_BIN);
		
		HAL_RTC_GetTime(&hrtc,&sTim,RTC_FORMAT_BIN); 
		  HAL_RTC_GetDate(&hrtc, &sDat, RTC_FORMAT_BIN);

		PutNumber((uint32_t)sTim.Hours);
		
		PutString(":");
		PutNumber((uint32_t)sTim.Minutes);
	
		PutString(":");
		PutNumber((uint32_t)sTim.Seconds);
			PutString("\n");
		
				if(sTim.Minutes==59){
						sAlarm.AlarmTime.Minutes=0;
					if(sTim.Hours==23){
							sAlarm.AlarmTime.Hours=0;
						}else{
							sAlarm.AlarmTime.Hours=sTim.Hours+1;
						}
					}else{
						sAlarm.AlarmTime.Minutes=sTim.Minutes+1;
						sAlarm.AlarmTime.Hours=sTim.Hours;
					}
					HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, FORMAT_BIN);		

				
					PutString("alarm: ");
		PutNumber((uint32_t)sAlarm.AlarmTime.Hours);		
		PutString(":");
		PutNumber((uint32_t)sAlarm.AlarmTime.Minutes);
							PutString(":");
		PutNumber((uint32_t)sAlarm.AlarmTime.Seconds);
		PutString("\n");
					
		SleepMode();
	}
					HAL_NVIC_DisableIRQ(RTC_IRQn);

	
	}			

}
コード例 #15
0
TEST_F(NetworkTableTest, ContainsKey) {
  auto nt = NetworkTable::GetTable("containskey");
  ASSERT_FALSE(nt->ContainsKey("testkey"));
  nt->PutNumber("testkey", 5);
  ASSERT_TRUE(nt->ContainsKey("testkey"));
}
コード例 #16
0
static CHAR  *FormatItem(CHAR *f, INT a)
{
	CHAR   c;
	INT    fieldwidth = 0;
	INT    leftjust = FALSE;
	INT    radix = 0;
	CHAR   fill = ' ';

	if (*f == '0')
		fill = '0';

	while ((c = *f++) != 0)
	{
		if (c >= '0' && c <= '9')
		{
			fieldwidth = (fieldwidth * 10) + (c - '0');
		}
		else
			switch (c)
			{
				case '\000':
					return (--f);
				case '%':
					NET_putchar('%');
					return (f);
				case '-':
					leftjust = TRUE;
					break;
				case 'c':
					{
						if (leftjust)
							NET_putchar(a & 0x7f);

						if (fieldwidth > 0)
							PutRepChar(fill, fieldwidth - 1);

						if (!leftjust)
							NET_putchar(a & 0x7f);
						return (f);
					}
				case 's':
					{
						if (leftjust)
							NU_PutString((CHAR *)a);
						if (fieldwidth > strlen((CHAR *)a))
							PutRepChar(fill,
									   fieldwidth - strlen((CHAR *)a));
						if (!leftjust)
							NU_PutString((CHAR *)a);
						return (f);
					}
				case 'd':
				case 'i':
					radix = -10;
					break;
				case 'u':
					radix = 10;
					break;
				case 'x':
					radix = 16;
					break;
				case 'X':
					radix = 16;
					break;
				case 'o':
					radix = 8;
					break;
				default:
					radix = 3;
					break;      /* unknown switch! */
			}
		if (radix)
			break;
	}

	if (leftjust)
		fieldwidth = -fieldwidth;

	PutNumber(a, radix, fieldwidth, fill);

	return (f);
}