gno/sys/fileport/support/MSGSend.c

1 line
5.9 KiB
C
Raw Normal View History

/* * Copyright (c) Kopriha Software, 1991 * All Rights Reserved * * MSGSend.CC * * Description: * This module is message center options from the menus.. * * * Table of Contents: * * send_message . . . . Send a message to the message center (by name) * retrieve_message . . Get message by name for our caller... * * History:April 23, 1991 Dave Created this file * * July 2, 1991 Dave Changed the parameters to pointers to * handles (so our caller can work with * the real shared data - not the original * copy that will be purged soon). * */ /* * define DEBUG_CODE * - add # to define to create the local * debug code (IE:module) */ #include <string.h> #ifndef __LOCATOR__ #include <Locator.h> #endif #ifndef __MISCTOOL__ #include <MiscTool.h> #endif #ifndef _KS_DEFINES_ #include "KS.Defines.h" #endif #ifndef _KS_MEMORY_ #include "KS.Memory.H" #endif #ifndef _KS_SHARED_DATA_ #include "SharedData.H" #endif #pragma noroot /* ****************************************************************** * * send_message() - Send a few handles to the message center by name.* * (IE: Create some shared memory for the different * * parts of the print spooler). * * * * Note: This routine used to take a pointer to the data items to * * setup in shared memory (by copying into memory that is * * allocated under a different user id). The problem with * * that scheme is that the caller does not have access to the * * shared structure on our return. The simple change is to * * pass pointers to the handle to the data. This routine * * then change the handles to point to the real shared data * * so our caller can work with it. * * * * History: Apr 23, 1991 Dave Created this routine * * ****************************************************************** */ #define ROUTINE_NAME "send_message" void send_message(KS_SHARED_DATA_HDL *shared_data_template, ResultBuf255Hndl *shared_path_template) { ResponseRecord response_rec; KS_NAMED_MESSAGE named_msg; Word user_id; Handle new_handle; KS_SHARED_DATA_PTR data_ptr; ResultBuf768Ptr path_ptr; KS_E_ERROR error; /* ************************************************************** * * Setup the header of the message center message... We're * * doing this here because the name of the message is not a * * C string to the system - here we can overwrite the element * * beyond of the message name without causing a problem (like * * blowing away the first byte of that element...). * * ************************************************************** */ named_msg.blockLen = sizeof(KS_NAMED_MESSAGE); strcpy(named_msg.message_name, "Kopriha Software SpoolMaster"); named_msg.name_length = strlen(named_msg.message_name); /* ************************************************************** * * Get a new user id for us to allocate the shared structures. * * ************************************************************** */ user_id = GetNewID((Word) 0xA000); /* Using a setup file id... */ (**shared_data_template)->driver_user_id = user_id; /* ************************************************************** * * Grab a couple of chunks of memory to setup the shared data * * structures * * ************************************************************** */ KS_MEMORY_ALLOCATE(attrNoSpec + attrLocked, sizeof(KS_SHARED_D