Exemplo n.º 1
0
int main(int argc, char *argv[])
{
	struct stat st;
	if(0!=fstat(0,&st)) return 1;
	char* sql = mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,0,0);
	if(sql == MAP_FAILED) return 2;
	close(0);

	#define PUTLIT(a) if(write(1,a,sizeof(a)-1));

	PUTLIT("const char sql[] = \"");

	size_t i;
	for(i=0;i<st.st_size;++i) {
		switch(sql[i]) {
		case '\n':
			PUTLIT("\\n\"\n\t\"");
			while(i < st.st_size && isspace(sql[++i]));
			--i; // bleh
			break;
		case '\r':
			PUTLIT("\\r");
			break;
		case '"':
			PUTLIT("\\\"");
			break;
		default:
			write(1,sql+i,1);
		};
	}
	PUTLIT("\";\n");
	
	return 0;
}
Exemplo n.º 2
0
/* NOTE: WHY BOTH old_data and dummy_data? */
cce_show_file()
{
	char			fn[256];
	struct FAB  		ccpfab;
	struct XABFHC		xab;
	sgmnt_data		*old_data, *dummy_data;
	sgmnt_addrs		*cs;
	short			iosb[4];
	unsigned short		fn_len;
	short unsigned		timlen;
	struct dsc$descriptor_s	time_desc;
	int4			status, size, cluster;
	unsigned char		*c;
	unsigned char 		outbuf[80];
	int			outbufidx;
	$DESCRIPTOR(output_qualifier, "OUTPUT");
	error_def(ERR_CCERDERR);
	error_def(ERR_CCEBADFN);
	error_def(ERR_DBOPNERR);
	error_def(ERR_DBNOTGDS);
	error_def(ERR_BADDBVER);
	error_def(ERR_CCEBGONLY);

	fn_len = SIZEOF(fn);
	if (!cli_get_str("FILE",fn,&fn_len))
	{
		lib$signal(ERR_CCEBADFN);
		return;
	}
	ccpfab = cc$rms_fab;
	ccpfab.fab$l_fna = fn;
	ccpfab.fab$b_fns = fn_len;
	ccpfab.fab$b_fac = FAB$M_BIO | FAB$M_GET;
	ccpfab.fab$b_shr = FAB$M_SHRPUT | FAB$M_SHRGET | FAB$M_UPI;
	ccpfab.fab$l_fop = FAB$M_UFO;
	xab = cc$rms_xabfhc;
	ccpfab.fab$l_xab = &xab;
	status = sys$open(&ccpfab);
	if (status != RMS$_NORMAL)
	{
		lib$signal(ERR_DBOPNERR, 2, ccpfab.fab$b_fns, ccpfab.fab$l_fna, status);
		return;
	}
	dummy_data = malloc(512);
	status = sys$qiow(EFN$C_ENF, ccpfab.fab$l_stv, IO$_READVBLK, iosb, 0, 0, dummy_data, 512, 1, 0, 0, 0);
	if (status & 1)
		status = iosb[0];
	if ((status & 1) == 0)
	{
		lib$signal(ERR_CCERDERR, 2, ccpfab.fab$b_fns, ccpfab.fab$l_fna, status);
		sys$dassgn(ccpfab.fab$l_stv);
		return;
	}
	if (memcmp(&dummy_data->label[0], GDS_LABEL, 12))
	{
		if (memcmp(&dummy_data->label[0], GDS_LABEL, 9))
			lib$signal (ERR_DBNOTGDS, 2, ccpfab.fab$b_fns, ccpfab.fab$l_fna);
		else
			lib$signal (ERR_BADDBVER, 2, ccpfab.fab$b_fns, ccpfab.fab$l_fna);
		status = sys$dassgn(ccpfab.fab$l_stv);
		assert(status & 1);
		return;
	}
	if (dummy_data->acc_meth != dba_bg)
	{
		lib$signal(ERR_CCEBGONLY);
		status = sys$dassgn(ccpfab.fab$l_stv);
		assert(status & 1);
		return;
	}
	size = (((SIZEOF(sgmnt_data)) + 511)/512) * 512;
	old_data = malloc(size);
	status = sys$qiow(EFN$C_ENF, ccpfab.fab$l_stv, IO$_READVBLK, iosb, 0, 0, old_data, size, 1, 0, 0, 0);
	if (status & 1)
		status = iosb[0];
	if ((status & 1) == 0)
	{
		lib$signal(ERR_CCERDERR, 2, ccpfab.fab$b_fns, ccpfab.fab$l_fna, status);
		status = sys$dassgn(ccpfab.fab$l_stv);
		assert(status & 1);
		return;
	}
	outbufidx = 0;
	util_out_open(&output_qualifier);
	PUTLIT("Database file ");
	PUTSTR(fn, fn_len);
	PUTLIT(" is ");
	if (!old_data->clustered)
	{
		PUTLIT(" NOT ");
	}
	PUTLIT(" a cluster database");
	util_out_write(outbuf, outbufidx);
	time_desc.dsc$b_dtype = DSC$K_DTYPE_T;
	time_desc.dsc$b_class = DSC$K_CLASS_S;
	time_desc.dsc$a_pointer = &outbuf[20];
	time_desc.dsc$w_length = 40;
	PUTTIM("STALE_INTERVAL", old_data->staleness);
	PUTTIM("RESPONSE_INTERVAL",old_data->ccp_response_interval);
	PUTTIM("QUANTUM_INTERVAL", old_data->ccp_quantum_interval);
	PUTTIM("TICK_INTERVAL", old_data->ccp_tick_interval);
	util_out_close();
	status = sys$dassgn(ccpfab.fab$l_stv);
	assert(status & 1);
	free(dummy_data);
	free(old_data);
	return;
}