You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
3.6 KiB
145 lines
3.6 KiB
/**[txh]********************************************************************
|
|
|
|
Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar>
|
|
Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar>
|
|
Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
02111-1307, USA
|
|
|
|
Description: Low level functions to output hexadecimal bitstreams.
|
|
|
|
***************************************************************************/
|
|
/*****************************************************************************
|
|
|
|
Target: Any
|
|
Language: C
|
|
Compiler: gcc 3.3.5 (Debian GNU/Linux)
|
|
Text editor: SETEdit 0.5.5
|
|
|
|
*****************************************************************************/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "global.h"
|
|
#include "bitshandle.h"
|
|
|
|
/* This function returns the inverted bits of its argument */
|
|
unsigned char
|
|
inv_byte(unsigned char b)
|
|
{
|
|
int i;
|
|
unsigned char t=0;
|
|
|
|
for (i=0;i<7;i++)
|
|
{
|
|
t|= (b & 0x01);
|
|
t = t << 1;
|
|
b = b >> 1;
|
|
}
|
|
t|=b & 0x01;
|
|
return t;
|
|
}
|
|
|
|
/* This function is used to generate a string with the hex value of the
|
|
inverted bits of from */
|
|
void
|
|
pbi(char *to, char *from,long nbytes)
|
|
{
|
|
int i;
|
|
int j;
|
|
char t[]="ZZ";
|
|
|
|
if (to==NULL) return;
|
|
|
|
j=nbytes*2;
|
|
|
|
for (i=0;i<nbytes;i++)
|
|
{
|
|
sprintf(t,"%02x",inv_byte(from[i]));
|
|
j-=2;
|
|
to[j]=t[0];
|
|
to[j+1]=t[1];
|
|
}
|
|
}
|
|
|
|
/* This function is used to generate a string with the hex value of the
|
|
bits of from */
|
|
void
|
|
pb(char *to, char *from,long nbytes)
|
|
{
|
|
int i;
|
|
int j;
|
|
char t[]="ZZ";
|
|
|
|
if (to==NULL) return;
|
|
|
|
j=0;
|
|
|
|
for (i=0;i<nbytes;i++)
|
|
{
|
|
sprintf(t,"%02x",from[i]);
|
|
j+=2;
|
|
to[j]=t[0];
|
|
to[j+1]=t[1];
|
|
}
|
|
}
|
|
|
|
/*this function writes bytes to a file with a max nuber of
|
|
chars per line */ /* it should not be here */
|
|
int
|
|
cutputs(char *string, FILE *fp, long block, int *col)
|
|
{
|
|
long remaining;
|
|
long wrote=0l;
|
|
int c=*col;
|
|
|
|
remaining=strlen(string);
|
|
if (!cutlines)
|
|
{
|
|
fwrite(string,1,remaining,fp);
|
|
col+=remaining;
|
|
return 0;
|
|
}
|
|
if (remaining<block)
|
|
block=remaining;
|
|
|
|
while (remaining)
|
|
{
|
|
long to_write=block-c;
|
|
if (to_write<0) to_write=0;
|
|
if (to_write & 1) to_write++;
|
|
wrote=fwrite(string,1,to_write,fp);
|
|
if (wrote!=to_write)
|
|
{
|
|
perror("CUTPUTS");
|
|
return 1;
|
|
}
|
|
c+=wrote;
|
|
string+=wrote;
|
|
remaining-=wrote;
|
|
if (remaining)
|
|
{
|
|
fputs("\n",fp);
|
|
c=0;
|
|
if (remaining<block)
|
|
block=remaining;
|
|
}
|
|
}
|
|
*col=c;
|
|
return 0;
|
|
}
|
|
|