Exemplo n.º 1
0
int4 lp_confirm (int4 lid, uint4 lkid)
/*
int4	 lid  ;			        license ID
uint4	 lkid ;				lock ID
*/
{
	error_def	(LP_NOTACQ) ;
	struct { short bln ; short cod ; char *buf ; int4 *rln ;} itm[3] ;
	int4 		status ;
	int4 		iosb[2] ;
	int4 		parid,len,len1 ;
	int4		res ;			/* parent lock resource name */

	itm[0].bln= 4 ; itm[0].cod= LKI$_PARENT ; itm[0].buf= &parid ; itm[0].rln= &len ;
	itm[1].bln= 4 ; itm[1].cod= LKI$_RESNAM ; itm[1].buf= &res   ; itm[1].rln= &len1 ;
	itm[2].bln = itm[2].cod = 0; itm[2].buf = itm[2].rln = 0;

	if (lkid!=0 && lid!=0)
	{
		status= gtm_getlkiw(EFN$C_ENF,&lkid,itm,iosb,0,0,0) ;
		PROPER(status) ;
		if (parid!=0 && process_id==res)
		{
			status= gtm_getlkiw(EFN$C_ENF,&parid,&itm[1],iosb,0,0,0) ;
			PROPER(status) ;
			status= ( lid==res ? SS$_NORMAL : LP_NOTACQ ) ;
		}
		else
		{
			status= LP_NOTACQ ;
		}
	}
	else
	{
		status= LP_NOTACQ ;
	}
	return status ;
}
Exemplo n.º 2
0
void util_cm_print(clb_struct *lnk, int code, char *message, int flush, ...)
{
	va_list		var;
	int4		status, i;
        size_t          msglen ;

	VAR_START(var, flush);

	if (outptr == outbuff)
	{
		*outptr++ = code;
	}
	if (message)
	{
		util_out_print(NULL, RESET);	/* Clear any pending messages */
		util_out_print_vaparm(message, NOFLUSH, var, MAXPOSINT4);
		msglen = (size_t)((char *)util_outptr - (char *)util_outbuff);
		memcpy(outptr, util_outbuff, msglen);
		outptr += msglen;
	}
	va_end(last_va_list_ptr);
	va_end(var);
	switch (flush)
	{
		case NOFLUSH:
			break;
		case FLUSH  :
			*outptr++ = 0 ;
			lnk->mbf = outbuff ;
			lnk->cbl = outptr - outbuff ;
			lnk->ast = 0 ;
			status = cmi_write(lnk) ;
			PROPER(code, status) ;
			/* Note: fall into reset.. */
		case RESET  :
			outptr = outbuff ;
			break;
		default	    :
			break ;
	}
	return;
}