⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blobsql.elf

📁 This Source-Navigator, an IDE for C/C++/Fortran/Java/Tcl/PHP/Python and a host of other languages.
💻 ELF
字号:
/* * $Id: blobsql.elf,v 1.1.1.1 2002/04/18 23:42:16 mdejong Exp $ *  * Copyright (C) 1997 Cygnus Solutions, Inc. * * Description: * A sample program written in ELF. */INCLUDE "menubar_.am"INCLUDE "sql.h"INCLUDE "xsql.h"INCLUDE "wind.h"INCLUDE "multix.h"DEFINE	XSQL#IMAGE#TABLE	"xsql_image"DEFINE	XSQL#IMAGE#ID		"id"DEFINE	XSQL#IMAGE#FILE		"filename"DEFINE	XSQL#IMAGE#HOST		"host"DEFINE	XSQL#IMAGE#DATE		"created"DEFINE	XSQL#IMAGE#OWNER	"author"DEFINE	XSQL#IMAGE#SIZE		"length"DEFINE	XSQL#IMAGE#PIC		"pic"FUNCTION xsql_store_blob(channel,id_val,fname,rdbms_type)	VAR	bobj	VAR	cmd	VAR	bin	VAR	cou	VAR	ack	VAR	FORMAT	sql	ans	VAR	date_value	VAR	host	IF 	NOT (rdbms_type = SQL#ORACLE OR		rdbms_type = SQL#SYBASE) 	{		INFO_MESSAGE@("Only Oracle & Sybase are supported")		RETURN	}	host = SHELL_COMMAND@("uname -n")	IF rdbms_type = SQL#ORACLE		date_value = "SYSDATE"	IF rdbms_type = SQL#SYBASE		date_value = "'10/10/93'"	bobj = READ_BINARY_FILE@(fname)	sql_write(channel,"send_blob " ++ BINARY_SIZE@(bobj))	cmd = BINARY_TO_ARRAY@(bobj,ELF_SOCKET_SIZE)	FOR cou=0 TO (ARRAY_SIZE@(cmd)-1)		bin = ARRAY_TO_BINARY@(cmd[cou])		SOCKET_WRITE_BINARY@(channel,bin)		ack = SOCKET_READ_BINARY@(channel,-1,1)	' Acknowledgement	NEXT cou	ans = sql_read(channel,-1)			' Send blob answer	sql_write(channel,"delete from " ++ XSQL#IMAGE#TABLE ++		" where " ++ XSQL#IMAGE#ID ++ "=" ++ id_val)	ans = sql_read(channel,-1)			' Delete answer	sql_write(channel,"insert into " ++ XSQL#IMAGE#TABLE ++		" (" ++ XSQL#IMAGE#ID ++ "," ++ XSQL#IMAGE#FILE ++		"," ++ XSQL#IMAGE#HOST ++ "," ++ XSQL#IMAGE#DATE ++ "," ++		XSQL#IMAGE#OWNER ++ "," ++ XSQL#IMAGE#SIZE ++ ")" ++		" values (" ++ id_val ++ ",'" ++ fname ++ "','" 		++ host[0] ++		"'," ++ 		date_value ++ ",'" ++ xsql_elf_user_name() ++ "' " ++		"," ++ BINARY_SIZE@(bobj) ++ ")")	bobj = NULL							' Free it	ans = sql_read(channel,-1)			' Insert answer	IF ans.errcode <> 0				'[01]		INFO_MESSAGE@(ans.errstr ++ "\n\n" ++ ans.errcmd)	IF rdbms_type = SQL#ORACLE	{		sql_write(channel,"update " ++ XSQL#IMAGE#TABLE ++			" set " ++ XSQL#IMAGE#PIC ++ "=:" ++ XSQL#IMAGE#PIC ++			" where " ++ XSQL#IMAGE#ID ++ "=" ++ id_val)	}	IF rdbms_type = SQL#SYBASE	{		sql_write(channel,"store_blob " ++ 							XSQL#IMAGE#TABLE ++ " " ++						    XSQL#IMAGE#PIC ++ " " ++ 							XSQL#IMAGE#ID  ++ " " ++							id_val)	}	ans = sql_read(channel,-1)			' Update answer	IF ans.errcode <> 0		INFO_MESSAGE@(ans.errstr ++ "\n\n" ++ ans.errcmd)	ELSE	{		sql_write(channel,"commit")		ans = sql_read(channel,-1)		INFO_MESSAGE@("Image Saved")	}ENDMACROFUNCTION xsql_store_file	VAR	FORMAT	sql_pars	sqlp	VAR	pathname	VAR	dir	VAR	file	VAR	off	ON ERROR	{		ERROR_BOX@()		GOTO quit	}	pathname = OPEN_PROMPT@(NULL,NULL,"*",		"Store file into RDBMS")	IF pathname = ""		EXIT@()	PARSE_PATHNAME@(pathname,dir,file)	off = STRING_INDEX@(file,".")	IF off > 0		file = SUBSTRING@(file,1,off - 1)	sqlp = sql_connect(FALSE)	xsql_store_blob(sqlp.channel,		"'" ++ file ++ "'",pathname,sqlp.rdbms_type)quit:	IF NOT IS_NULL@(sqlp.channel)		sql_disconnect(sqlp.channel)ENDMACRODEFINE	XSQL#FETCH#LIST		"id_list"DEFINE	XSQL#FETCH#OPEN		"open"DEFINE	XSQL#FETCH#SEARCH	"search"/* *	Menu events */DEFINE	FETCH#NAME#ASC		"name_asc"DEFINE	FETCH#NAME#DESC		"name_desc"DEFINE	FETCH#DATE#ASC		"date_asc"DEFINE	FETCH#DATE#DESC		"date_desc"DEFINE	FETCH#VIEW#ID		"view_id"DEFINE	FETCH#VIEW#FNAME	"view_fname"DEFINE	FETCH#VIEW#HOST		"view_host"DEFINE	FETCH#VIEW#DATE		"view_date"DEFINE	FETCH#VIEW#OWNER	"view_owner"DEFINE	FETCH#VIEW#SIZE		"view_size"FUNCTION xsql_fetch_file	VAR	FORMAT	sql_pars	sqlp	VAR	FORMAT	sql			ans	VAR	FORMAT	sql			blb	VAR	file	VAR	dbox	VAR	cou	VAR	exiter	VAR	extension	VAR	id	VAR	cmd	VAR	menu_str	VAR	list	VAR	file_operation	VAR	order_field	VAR	fetch_name_asc	VAR	fetch_name_desc	VAR	fetch_date_asc	VAR	fetch_date_desc	VAR	fetch_cmd	VAR	fetch_query	VAR	update_flag	ON ERROR	{		ERROR_BOX@()		GOTO quit	}	order_field = XSQL#IMAGE#ID	file_operation = MENUSTAT#DIMMED	sqlp = sql_connect(FALSE)	fetch_query = "select " ++ XSQL#IMAGE#ID ++ "," ++ XSQL#IMAGE#FILE ++		"," ++ XSQL#IMAGE#HOST ++ "," ++ XSQL#IMAGE#DATE ++ "," ++		XSQL#IMAGE#OWNER ++		"," ++ XSQL#IMAGE#SIZE ++ " from " ++ XSQL#IMAGE#TABLE ++		" order by " ++ order_field	dbox = DB_LOAD@("xsql/fetch_file")	menu_str = xsql_fetch_doc_menu()	SET_SELECTIONS@(SQL#MENU#ID,menu_str)	DB_MENU_BAR@(dbox,SQL#MENU#ID)	DB_ICON@(dbox,XSQL#BITMAP)	DB_OWNERLESS@(dbox,TRUE)	DB_CTRL_HORIZ_SCROLL@(dbox,XSQL#FETCH#LIST,TRUE)	DB_CTRL_PICK_DEFAULT@(dbox,XSQL#FETCH#LIST,TRUE)	DB_CTRL_MONOSPACE@(dbox,XSQL#FETCH#LIST,TRUE)	DB_CTRL_RETURN_ON_CHANGE@(dbox,XSQL#FETCH#LIST,TRUE)	list = xsql_exec_fetch_query(sqlp.channel,ans,fetch_query)	DB_CTRL_STRINGS@(dbox,XSQL#FETCH#LIST,list)	DB_CTRL_VALUE@(dbox,XSQL#FETCH#LIST,0)	DB_WINDOW_REMAIN@(dbox,TRUE)	DB_CTRL_DEFAULT_BUTTON@(dbox,XSQL#FETCH#OPEN,TRUE)	DB_CTRL_GRAYED@(dbox,XSQL#FETCH#OPEN,TRUE)	fetch_name_asc = MENUSTAT#RADIO_ON	fetch_name_desc = MENUSTAT#RADIO_OFF	fetch_date_asc = MENUSTAT#RADIO_OFF	fetch_date_desc = MENUSTAT#RADIO_OFF	DB_MENU_STATUS@(dbox,FETCH#VIEW#ID,MENUSTAT#TOGGLE_ON)	DB_MENU_STATUS@(dbox,FETCH#VIEW#FNAME,MENUSTAT#TOGGLE_ON)	DB_MENU_STATUS@(dbox,FETCH#VIEW#HOST,MENUSTAT#TOGGLE_ON)	DB_MENU_STATUS@(dbox,FETCH#VIEW#DATE,MENUSTAT#TOGGLE_ON)	DB_MENU_STATUS@(dbox,FETCH#VIEW#OWNER,MENUSTAT#TOGGLE_ON)	DB_MENU_STATUS@(dbox,FETCH#VIEW#SIZE,MENUSTAT#TOGGLE_ON)again:	DB_MENU_STATUS@(dbox,FETCH#NAME#ASC,fetch_name_asc)	DB_MENU_STATUS@(dbox,FETCH#NAME#DESC,fetch_name_desc)	DB_MENU_STATUS@(dbox,FETCH#DATE#ASC,fetch_date_asc)	DB_MENU_STATUS@(dbox,FETCH#DATE#DESC,fetch_date_desc)	DB_MENU_STATUS@(dbox,COPY#MARKED#FIELDS,file_operation)	DB_MENU_STATUS@(dbox,EDIT#CUT#CMD,file_operation)	DB_MENU_STATUS@(dbox,EDIT#DEL#CMD,file_operation)	DB_DISPLAY@(dbox)	DB_MENU_STATUS@(dbox,FETCH#DATE#ASC,MENUSTAT#RADIO_ON)	exiter = DB_EXIT_CTRL@(dbox)	IF exiter = MENU#EV	{		cmd = DB_MENU_BAR_WORD@(dbox)		IF cmd = START#WP		{			NEW_TASK@("WP_APPLICATION_DLG@")			GOTO again		}		ELSE IF cmd = START#GR		{			NEW_TASK@("GR_APPLICATION_DLG@")			GOTO again		}		ELSE IF cmd = START#SS		{			NEW_TASK@("SS_APPLICATION_DLG@")			GOTO again		}		ELSE IF cmd = START#INBOX		{			NEW_TASK@("INBOX_DLG@")			GOTO again		}		ELSE IF cmd = START#MAIL		{			NEW_TASK@("MAIL_DLG@")			GOTO again		}		ELSE IF cmd = START#DD		{			NEW_TASK@("DD_DIRECTORY_DISPLAY@")			GOTO again		}		ELSE IF cmd = START#ME		{			NEW_TASK@("ME_APPLICATION_DLG@")			GOTO again		}		ELSE IF cmd = START#MAIN		{			NEW_TASK@("MAIN_DBOX@")			GOTO again		}		ELSE IF cmd = RUN#MACRO		{			NEW_TASK@("RUN_MACRO_DLG@")			GOTO again		}		ELSE IF cmd = CUST#LOOK#FEEL		{			NEW_TASK@("X_PREFS_DLG@")			GOTO again		}		ELSE IF cmd = CUST#MENU#BAR		{			file = USER_DIR@() ++ "/" ++ FETCH#SQL#MB			cmd = NULL			cmd[0] = FETCH#SQL#MB			WRITE_DATA_FILE@(file,menu_str)			PEND_FOR_NEW_TASK@("xsql_customize",cmd)			menu_str = READ_DATA_FILE@(cmd)			SET_SELECTIONS@(SQL#MENU#ID,menu_str)			DB_MENU_BAR@(dbox,SQL#MENU#ID)			GOTO again		}		ELSE IF cmd = START#ISQL		{			cmd = sqlp.host,sqlp.rdbms_name,sqlp.rdbms_type,				sqlp.user,sqlp.passwd			NEW_TASK@("ISQL",cmd)			GOTO again		}		ELSE IF cmd = START#SQL#RUN#FORM		{			cmd = NULL			cmd[1] = CREATE_TEMP_FILE@("/tmp/xsql-frm%%%%%%")			WRITE_DATA_FILE@(cmd[1],sqlp)			NEW_TASK@("sqlrunform",cmd)			GOTO again		}		ELSE IF cmd = START#SQL#FORMS		{			cmd = sqlp.host,sqlp.rdbms_name,sqlp.rdbms_type,				sqlp.user,sqlp.passwd			NEW_TASK@("SQLFORMS",cmd)			GOTO again		}		ELSE IF cmd = EXIT#FUNC		{			IF update_flag = TRUE			{				cmd = YES_NO_CANCEL_PROMPT@("Do you want to save your changes ?")				IF IS_NULL@(cmd)					GOTO again				IF cmd = TRUE				{					sql_write(sqlp.channel,"commit")					ans = sql_read(sqlp.channel,-1)				}			}			GOTO quit		}		ELSE IF cmd = COPY#MARKED#FIELDS OR cmd = EDIT#DEL#CMD OR			cmd = EDIT#CUT#CMD		{			cou = DB_CTRL_GET_VALUE@(dbox,XSQL#FETCH#LIST) - 1			IF cmd = COPY#MARKED#FIELDS OR cmd = EDIT#CUT#CMD			{				sql_write(sqlp.channel,fetch_cmd)				blb = sql_read(sqlp.channel,-1)				IF blb.errcode <> 0				{					INFO_MESSAGE@(blb.errstr)					GOTO again				}							xsql_save_file_as(ans.records[cou][1],					blb.records[0][0],NULL,2)			}			IF cmd = EDIT#DEL#CMD OR cmd = EDIT#CUT#CMD			{				sql_write(sqlp.channel,"delete from " ++					XSQL#IMAGE#TABLE ++					" where " ++ XSQL#IMAGE#ID ++ "='" ++ 					ans.records[cou][0] ++ "'")				blb = sql_read(sqlp.channel,-1)		' Delete answer				IF blb.errcode <> 0					INFO_MESSAGE@(blb.errstr)				ELSE				{					update_flag = TRUE					list = xsql_exec_fetch_query(sqlp.channel,ans,						fetch_query)					DB_CTRL_STRINGS@(dbox,XSQL#FETCH#LIST,list)					DB_CTRL_VALUE@(dbox,XSQL#FETCH#LIST,0)					DB_CTRL_GRAYED@(dbox,XSQL#FETCH#OPEN,TRUE)				}			}		}/*		ELSE IF cmd FETCH#NAME#ASC	DB_MENU_STATUS@(dbox,FETCH#NAME#ASC,fetch_name_asc)	DB_MENU_STATUS@(dbox,FETCH#NAME#DESC,fetch_name_desc)	DB_MENU_STATUS@(dbox,FETCH#DATE#ASC,fetch_date_asc)	DB_MENU_STATUS@(dbox,FETCH#DATE#DESC,fetch_date_desc)'		ELSE IF cmd = EXIT#FUNC*/	}	ELSE IF exiter = XSQL#FETCH#OPEN	{		cou = DB_CTRL_GET_VALUE@(dbox,XSQL#FETCH#LIST) - 1		IF sqlp.rdbms_type = SQL#SYBASE		{			sql_write(sqlp.channel,"set TEXTSIZE 1000000")			blb = sql_read(sqlp.channel,-1)		}		sql_write(sqlp.channel,fetch_cmd)		blb = sql_read(sqlp.channel,-1)		IF blb.errcode <> 0		{			INFO_MESSAGE@(blb.errstr)			GOTO again		}		xsql_blob_doc_type(ans.records[cou][1],extension)		IF NOT IS_NULL@(extension)		{			file = CREATE_TEMP_FILE@("/tmp/" ++				SUBSTRING@(ans.records[cou][0],1,5) ++ "%%%%%%" ++				extension)			WRITE_BINARY_FILE@(file,blb.records[0][0])			IF extension = ".im"			{				GR_APPLICATION_DLG@()				GR_REVERT@()				GR_SET_FOR_IMPORT@()				GE_PASTE_IM@(file)			}			ELSE			{						OPEN_DOC@(file)			}		}	}	ELSE IF exiter = XSQL#FETCH#LIST	{		cou = DB_CTRL_GET_VALUE@(dbox,XSQL#FETCH#LIST) - 1		IF IS_NULL@(cou) OR cou < 0		{			DB_CTRL_GRAYED@(dbox,XSQL#FETCH#OPEN,TRUE)			file_operation = MENUSTAT#DIMMED			GOTO again		}		fetch_cmd = "fetch_blob select " ++ XSQL#IMAGE#PIC ++ " from " ++			XSQL#IMAGE#TABLE ++ " where " ++ XSQL#IMAGE#ID ++ "=" ++			"'" ++ ans.records[cou][0] ++ "'"		file_operation = MENUSTAT#NORMAL		xsql_blob_doc_type(ans.records[cou][1],extension)		IF IS_NULL@(extension)		{			DB_CTRL_GRAYED@(dbox,XSQL#FETCH#OPEN,TRUE)		}		ELSE		{			DB_CTRL_GRAYED@(dbox,XSQL#FETCH#OPEN,FALSE)		}	}	ELSE IF exiter = XSQL#FETCH#SEARCH	{		list = xsql_exec_fetch_query(sqlp.channel,ans,				fetch_query)		DB_CTRL_STRINGS@(dbox,XSQL#FETCH#LIST,list)		DB_CTRL_VALUE@(dbox,XSQL#FETCH#LIST,0)		DB_CTRL_GRAYED@(dbox,XSQL#FETCH#OPEN,TRUE)	}	GOTO againquit:	IF NOT IS_NULL@(sqlp.channel)		sql_disconnect(sqlp.channel)ENDMACROFUNCTION xsql_blob_doc_type(pathname,ext)	VAR	dir	VAR	file	VAR	def	VAR	off	def = "\\i(file-16x16)"	ext = NULL	PARSE_PATHNAME@(pathname,dir,file)	off = STRING_INDEX@(file,".")	IF off = 0		RETURN(def)	ext = SUBSTRING@(file,off)	IF ext = ".im"		RETURN("\\i(5-16x16)")	IF ext = ".ag"		RETURN("\\i(ge-16x16)")	IF ext = ".aw"		RETURN("\\i(dc-16x16)")	IF ext = ".as"		RETURN("\\i(ss-16x16)")	IF ext = ".am"		RETURN("\\i(4-16x16)")	IF ext = ".au"		RETURN("\\i(xsql/voice)")	ext = NULL	RETURN(def)ENDMACROFUNCTION xsql_fetch_doc_menu	VAR	file	VAR	mainm	VAR	menu_bar	VAR	view	VAR	order_by	mainm = xsql_main_menu_opt()	file[0] = "Copy...",COPY#MARKED#FIELDS,		"F4",NULL,NULL,NULL,NULL,NULL,"C"	file[1] = "Move...",EDIT#CUT#CMD,		"F3",NULL,NULL,NULL,NULL,NULL,"M"	file[2] = "Delete...",EDIT#DEL#CMD,		"^D",NULL,NULL,NULL,NULL,NULL,"D"	file[3] = "Exit",EXIT#FUNC,		"^E",NULL,NULL,NULL,NULL,NULL,"E"	order_by[0] = "Name Ascending",FETCH#NAME#ASC,		NULL,NULL,NULL,NULL,NULL,NULL,"N"	order_by[1] = "Name Descending",FETCH#NAME#DESC,		NULL,NULL,NULL,NULL,NULL,NULL,"m"	order_by[2] = "Date Ascending",FETCH#DATE#ASC,		NULL,NULL,NULL,NULL,NULL,NULL,"t"	order_by[3] = "Date Descending",FETCH#DATE#DESC,		NULL,NULL,NULL,NULL,NULL,NULL,"e"	view[0] = "Id",FETCH#VIEW#ID,		NULL,NULL,NULL,NULL,NULL,NULL,"I"	view[1] = "Filename",FETCH#VIEW#FNAME,		NULL,NULL,NULL,NULL,NULL,NULL,"F"	view[2] = "Host",FETCH#VIEW#HOST,		NULL,NULL,NULL,NULL,NULL,NULL,"H"	view[3] = "Date",FETCH#VIEW#DATE,		NULL,NULL,NULL,NULL,NULL,NULL,"e"	view[4] = "Owner",FETCH#VIEW#OWNER,		NULL,NULL,NULL,NULL,NULL,NULL,"O"	view[5] = "Size",FETCH#VIEW#SIZE,		NULL,NULL,NULL,NULL,NULL,NULL,"S"	menu_bar[0] = "*",mainm	menu_bar[1] = "File",file,		NULL,NULL,NULL,NULL,NULL,NULL,"F"	menu_bar[2] = "View",view,		NULL,NULL,NULL,NULL,NULL,NULL,"V"	menu_bar[3] = "Order By",order_by,		NULL,NULL,NULL,NULL,NULL,NULL,"O"	RETURN(menu_bar)ENDMACROFUNCTION xsql_exec_fetch_query(channel,FORMAT sql ans,cmd)	VAR	list	VAR	raw_list	VAR	cou	VAR	extension	sql_write(channel,cmd)	ans = sql_read(channel,-1)	IF ans.errcode <> 0	{		INFO_MESSAGE@(ans.errstr ++ "\n\n" ++ ans.errcmd)		list[0] = NULL		RETURN(list)	}	raw_list = xsql_create_output(NULL,NULL,TRUE,ans)	list[0] = "\\i(xsql/emt-16x16)" ++ raw_list[0]	FOR cou=0 TO (ARRAY_SIZE@(ans.records)-1)		list[cou + 1] = xsql_blob_doc_type(ans.records[cou][1],			extension) ++ raw_list[cou + 1]	NEXT cou	RETURN(list)ENDMACRO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -