home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Black Box 4
/
BlackBox.cdr
/
progc
/
c_source.arj
/
IIBDB.C
< prev
next >
Wrap
Text File
|
1991-01-02
|
9KB
|
350 lines
#include "iibc.h"
#include "iibdb.h"
static char emp[] = "Press any key to continue";
int initial_fields(int new_or_old,
int pages,
int titles,
int fields,
struct fld_info *fld,
struct ttl_info *ttl,
int rulh,int culh,int rbrh,int cbrh,
char *title1)
{
int i;
for (i = 0; i<= pages; i++)
{
_setactivepage(i);
_settextwindow(1,1,25,80);
_settextcolor(env.frgrd[0]);
_setbkcolor(env.bkgrd[0]);
_clearscreen(_GWINDOW);
frame(rulh+1,culh,rbrh - rulh - 1,cbrh - culh + 1,env.frgrd[2],env.bkgrd[2]);
_settextcolor(env.frgrd[0]);
_setbkcolor(env.bkgrd[0]);
show_option(rulh,40,title1,'C',env.frgrd[1],env.bkgrd[1]);
_settextwindow(rbrh,culh,rbrh,cbrh);
_settextcolor(env.frgrd[5]);
_setbkcolor(env.bkgrd[5]);
_clearscreen(_GWINDOW);
_settextposition(1,1);
_outtext("/ [PgUp] [PgDn] [Home] [End] [Esc] = Quit [F10] = SAVE INS OFF");
} /* endfor */
_settextcolor(env.frgrd[4]);
_setbkcolor(env.bkgrd[4]);
for (i = 0; i <= titles; i++)
{
_setactivepage(ttl[i].pg_num);
_settextwindow(rulh + 2,culh + 1,rbrh - 2,cbrh - 1);
_settextposition(ttl[i].t_row,ttl[i].t_column);
_outtext(ttl[i].ttl_title);
} /* endfor */
_settextcolor(env.frgrd[0]);
_setbkcolor(env.bkgrd[0]);
for (i = 0; i <= fields; i++)
{
if (fld[i].fld_type != 'H')
{
_setactivepage(fld[i].pg_num);
_settextwindow(rulh + 2,culh + 1,rbrh - 2,cbrh - 1);
_wrapon(_GWRAPON);
_settextposition(fld[i].t_row,fld[i].t_column);
_outtext(fld[i].fld_title);
} /* endif */
} /* endfor */
_settextcolor(env.frgrd[5]);
_setbkcolor(env.bkgrd[5]);
if (new_or_old == NEW)
{
for (i = 0; i <= fields; i++)
{
if (fld[i].fld_type != 'P')
{
fld[i].fld_buffer[0] = '\0';
fld[i].changed = 0;
fld[i].cur_pos = 0;
fld[i].input_count = 0;
}
else
{
fld[i].changed = 0;
fld[i].input_count = strlen(fld[i].fld_buffer);
fld[i].cur_pos = strlen(fld[i].fld_buffer);
} /* endif */
if (fld[i].fld_type != 'H')
{
_setactivepage(fld[i].pg_num);
_settextwindow(fld[i].row+2,fld[i].column+1,fld[i].row+2,fld[i].column+fld[i].length);
_clearscreen(_GWINDOW);
_settextwindow(rulh + 2,culh + 1,rbrh - 2,cbrh - 1);
_settextposition(fld[i].row,fld[i].column);
_outtext(fld[i].fld_buffer);
} /* endif */
} /* endfor */
}
else
{
for (i = 0; i <= fields; i++)
{
if (fld[i].fld_type != 'H')
{
_setactivepage(fld[i].pg_num);
fld[i].changed = 0;
fld[i].input_count = strlen(fld[i].fld_buffer);
fld[i].cur_pos = strlen(fld[i].fld_buffer);
_settextwindow(fld[i].row+2,fld[i].column+1,fld[i].row+2,fld[i].column+fld[i].length);
_clearscreen(_GWINDOW);
_settextwindow(rulh + 2,culh + 1,rbrh - 2,cbrh - 1);
_settextposition(fld[i].row,fld[i].column);
_outtext(fld[i].fld_buffer);
} /* endif */
} /* endfor */
} /* endif */
return(0);
} /* end initial_fields */
/*---------------------------------------------------------------------------*/
int delete_rec(char *file_name,
char *rec_id,
int fields,
struct fld_info *fld,
int key_field)
{
int handle1;
char bigbuff[257];
long f_position = 0L;
long file_length = 0L;
int found_it = 0;
int i,j,k,counter;
for (i = 0; i <= fields; i++)
{
fld[i].changed = 0;
fld[i].cur_pos = 0;
fld[i].input_count = 0;
fld[i].fld_buffer[0] = '\0';
} /* endfor */
handle1 = sopen(file_name,O_RDWR|O_BINARY,SH_DENYWR);
if (handle1 == -1)
{
return(-1);
}
else
{
file_length = filelength(handle1);
f_position = lseek(handle1,f_position,SEEK_SET);
while (f_position < file_length - 1 && !found_it)
{
bigbuff[0] = '\0';
read(handle1,bigbuff,256);
i = 0;
while (bigbuff[i] != '\r')
{
i++;
} /* endwhile */
bigbuff[i] = '\0';
j = 0;
counter = 0;
for (k=0; k <= i;k++)
{
if (bigbuff[k] == ','|| bigbuff[k] == '\0')
{
fld[counter].fld_buffer[j] = '\0';
counter++;
j = 0;
}
else
{
if (bigbuff[k] != ' ')
{
fld[counter].fld_buffer[j] = bigbuff[k];
j++;
} /* endif */
} /* endif */
} /* endfor */
if (strcmp(fld[key_field].fld_buffer,rec_id) == 0)
{
found_it = 1;
f_position = lseek(handle1,f_position,SEEK_SET);
for (j=0; j<i;j++ )
{
write(handle1,"#",1);
} /* endfor */
close(handle1);
return(0);
}
else
{
f_position = f_position + i + 2;
f_position = lseek(handle1,f_position,SEEK_SET);
} /* endif */
} /* endwhile */
close(handle1);
return(11);
} /* endif */
} /* end delete_rec */
/*---------------------------------------------------------------------------*/
int read_rec(char *file_name,
char *rec_id,
int fields,
struct fld_info *fld)
{
int handle1;
char bigbuff[300];
long f_position = 0L;
long file_length = 0L;
int found_it = 0;
int i,j,k,counter;
for (i = 0; i <= fields; i++)
{
fld[i].changed = 0;
fld[i].cur_pos = 0;
fld[i].input_count = 0;
fld[i].fld_buffer[0] = '\0';
} /* endfor */
handle1 = sopen(file_name,O_RDONLY|O_BINARY,SH_DENYWR);
if (handle1 == -1)
{
return(-1);
}
else
{
file_length = filelength(handle1);
f_position = lseek(handle1,f_position,SEEK_SET);
while (f_position < file_length - 1 && !found_it)
{
bigbuff[0] = '\0';
read(handle1,bigbuff,300);
i = 0;
while (bigbuff[i] != '\r')
{
i++;
} /* endwhile */
bigbuff[i] = '\0';
j = 0;
counter = 0;
for (k=0; k <= i;k++)
{
if (bigbuff[k] == ','|| bigbuff[k] == '\0')
{
fld[counter].fld_buffer[j] = '\0';
counter++;
j = 0;
}
else
{
fld[counter].fld_buffer[j] = bigbuff[k];
j++;
} /* endif */
} /* endfor */
if (strcmp(fld[0].fld_buffer,rec_id) == 0)
{
found_it = 1;
close(handle1);
return(0);
}
else
{
f_position = f_position + i + 2;
f_position = lseek(handle1,f_position,SEEK_SET);
} /* endif */
} /* endwhile */
close(handle1);
return(11);
} /* endif */
} /* end read_rec */
/*---------------------------------------------------------------------------*/
int write_rec(int handle1,
int fields,
struct fld_info *fld,
long offset,
int reference)
{
char bigbuff[300];
long f_position = 0L;
char format_buff[20];
char length_buff[20];
char temp_buff[61];
int i;
int r_code = 0;
int rec_length = 0;
bigbuff[0] = '\0';
for (i = 0; i <= fields; i++)
{
format_buff[0] = '\0';
length_buff[0] = '\0';
rec_length = rec_length + fld[i].length + 1;
itoa(fld[i].length,length_buff,10);
if (fld[i].fld_type != 'N')
{
strcpy(format_buff,"%-");
}
else
{
strcpy(format_buff,"%");
} /* endif */
strcat(format_buff,length_buff);
strcat(format_buff,"s");
if (i == fields)
{
strcat(format_buff,"\r\n");
}
else
{
strcat(format_buff,",");
} /* endif */
temp_buff[0] = '\0';
sprintf(temp_buff,format_buff,fld[i].fld_buffer);
strcat(bigbuff,temp_buff);
} /* endfor */
rec_length = rec_length + 1;
bigbuff[rec_length] = '\0';
f_position = lseek(handle1,offset,reference);
if (locking(handle1,LK_LOCK,rec_length) != -1)
{
r_code = write(handle1,bigbuff,rec_length);
f_position = lseek(handle1,f_position,reference);
locking(handle1,LK_UNLCK,rec_length);
}
else
{
box_message(1,1,"write_rec Locking Failed.",emp,NULL);
r_code = -112;
} /* endif */
return(r_code);
} /* end write_rec */