Article # 592, added by Geoworks, historical record
| first | previous | index | next | last |

Broken C-stub: SpoolGetPaperSizeOrder



C Routine:  SpoolGetPaperSizeOrder
Date Fixed: 7/18/97

The c-stub for SpoolGetPaperSizeOrder is broken because it does not
take the proper parameters. It needs to have a fourth parameter,
namely the PageType. Use this fixed function prototype and c-stub
in your application if you want to get the paper size order from
the spool library.

/*
 * Put this function prototype in your .goc file so it will know
 * about the new C-stub routine.
 */
extern void
    _pascal SpoolGetPaperSizeOrderFixed(byte *orderBuf,
					byte *userDefBuf,
					PaperSizeOrderInfo *numBuf,
					PageType pageType);


; ------------------------- spool.asm -------------------------------

; include necessary header files
include         stdapp.def
include         spool.def

; make this C-stub available for external use
global SPOOLGETPAPERSIZEORDERFIXED:far

; start our code resource
CommonCode	segment resource

; define this internal structure for our stub
PaperSizeOrderInfo      struct
        PSOI_numOrdered word
        PSOI_numUnused  word
PaperSizeOrderInfo      ends

; turn on the pascal parameter-passing convention
SetGeosConvention

; start our C-stub
SPOOLGETPAPERSIZEORDERFIXED proc far	orderBuf:fptr.byte,
       					userDefBuf:fptr.byte,
        				numBuf:fptr.PaperSizeOrderInfo,
	        			pageType:PageType
					; above params must be word-sized
		;
		; These are the registers this stub will use, save them.
		;
		uses	ds, es, di, si
		.enter				; directive to save registers
		les	di, ss:[orderBuf]	; load first param
		lds	si, ss:[userDefBuf]	; load second param
		push	bp			; save bp here, not in uses
		mov	bp, ss:[pageType]	; load third param
		call	SpoolGetPaperSizeOrder	; call asm routine
		;
		; Restore bp here because accessing the local variables
		; requires bp.
		;
		pop	bp
		les	di, ss:[numBuf]		; make pointer to buffer
		;
		; Set the number of page size orders retrieved
		; and those left unused.
		;
		mov	es:[di].PSOI_numOrdered, cx
		mov	es:[di].PSOI_numUnused, dx
		.leave				; this restores registers
		ret
SPOOLGETPAPERSIZEORDERFIXED	endp

; return to C parameter-passing convention
SetDefaultConvention

; end code resource
CommonCode	ends