Пример #1
0
static void AppendMenuItemW(INT MenuGroup, PWSTR pString)
{	LPPOPUPLIST NewItem;

	if (PopupInUse+1 /*NULL element at end*/ >= PopupAllocated) {
		LPLPPOPUPLIST np;

		if ((np = _fcalloc(PopupAllocated+100, sizeof(LPPOPUPLIST))) == NULL)
			return;
		if (PopupInUse) {
			_fmemcpy(np, PopupList, PopupInUse*sizeof(LPPOPUPLIST));
			_ffree(PopupList);
		}
		PopupList = np;
		PopupAllocated += 100;
	}
	NewItem = _fcalloc(1, sizeof(POPUPLIST) + wcslen(pString)*sizeof(WCHAR));
	if (NewItem != NULL) {
		int i;

		wcscpy(NewItem->Name, pString);
		if ((i = wcslen(pString)) > MaxLen) MaxLen = i;
		NewItem->MenuGroup = (BYTE)MenuGroup;
		/*binary array search...*/
		{	int i, d;

			if (PopupInUse) {
				BOOL Less;

				for (d=PopupInUse-1; d & (d-1); d &= d-1);
				/*d = largest power of 2 less than PopupInUse*/
				i = d;
				if (i) i += i-1;
				for (;;) {
					Less = i < PopupInUse
						   && ( PopupList[i]->MenuGroup <  MenuGroup ||
							   (PopupList[i]->MenuGroup == MenuGroup
								&& lstrcmpiW(PopupList[i]->Name, pString) < 0));
					if (Less) i += d;
					else i -= d;
					if (!d) break;
					d >>= 1;
				}
				if (Less) ++i;
			} else i = 0;
			if (i < PopupInUse)
				_fmemmove(PopupList+i+1, PopupList+i,
						  (PopupInUse-i)*sizeof(LPPOPUPLIST));
			assert(i >= 0);
			assert(i < PopupAllocated);
			++PopupInUse;
			PopupList[i] = NewItem;
		}
Пример #2
0
void allocateTables(void)
{
    logTab =  _fcalloc(cfg.MAXLOGTAB+1, sizeof(struct lTable));
    msgTab1 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable1));
    msgTab2 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable2));
/*  msgTab3 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable3)); */
    msgTab4 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable4));
    msgTab5 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable5));
    msgTab6 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable6));
    msgTab7 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable7));
    msgTab8 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable8));
/*  msgTab9 = _fcalloc(cfg.nmessages+1, sizeof(struct messagetable9)); */
}
Пример #3
0
PMAP DupMapping(PMAP m)
{	PMAP n;

	if ((n = calloc(1, sizeof(*n))) == NULL) return (NULL);
	AllocStringA(&n->Name, m->Name);
	AllocStringA(&n->InputDisplay, m->InputDisplay);
	AllocStringA(&n->Replace, m->Replace);
	n->ReplaceMap = _fcalloc(lstrlen((PSTR)m->ReplaceMap) + 2, 1);
	if (n->ReplaceMap != NULL)
		_fmemcpy(n->ReplaceMap, m->ReplaceMap, lstrlen((LPSTR)m->ReplaceMap)+2);
	n->InputMatch = _fcalloc(lstrlen((PSTR)m->InputMatch) + 2, 1);
	if (n->InputMatch != NULL)
		_fmemcpy(n->InputMatch, m->InputMatch, lstrlen((LPSTR)m->InputMatch)+2);
	n->Flags = m->Flags;
	if (n->Name == NULL || n->InputDisplay == NULL || n->Replace	== NULL
						|| n->InputMatch   == NULL || n->ReplaceMap	== NULL) {
		FreeMappings(n);
		return (NULL);
	}
	return (n);
}
Пример #4
0
static BOOL NewUndo(void)
{	LPUNDO lpUndo;

	if ((lpUndo = (LPUNDO)_fcalloc(sizeof(UNDO), 1)) == NULL)
		return (FALSE);
	UndoMemUsed += sizeof(UNDO);
	if (LastUndo) {
		LastUndo->Next = lpUndo;
		lpUndo->Prev = LastUndo;
	} else FirstUndo = lpUndo;
	lpUndo->Pos   = (ULONG)-1;
	lpUndo->Flags = GlobalUndoFlags;
	LastUndo = NextSequenceUndo = lpUndo;
	return (TRUE);
}
Пример #5
0
/*
 * Called from setup_pkt_inf() in pcpkt.c
 */
static DWORD setup_pkt_inf_fast (void)
{
  /* Allocate space for asmpkt_inf, temp area, pkt-stub and Tx buffer.
   */
  DWORD  rdata_size = PKT_TMP();
  size_t stub_size  = sizeof(real_stub_array);

#if (DOSX)
  rdata_size += PKT_TMP_SIZE + ETH_MAX + 10;
#endif

  if (rdata_size >= 64*1024UL)
  {
    TCP_CONSOLE_MSG (0, ("%s (%u): Development error:\nsize %u too large\n",
                         __FILE__, __LINE__, (unsigned int)rdata_size));
    return (0);
  }
  if (stub_size < 0xC0)
  {
    TCP_CONSOLE_MSG (0, ("%s (%u): Development error:\n\"pkt_stub.h\""
                         " seems truncated (%d bytes)\n",
                         __FILE__, __LINE__, SIZEOF(real_stub_array)));
    return (0);
  }

#if (DOSX & DJGPP)
  {
    int i, seg, sel;

    seg = __dpmi_allocate_dos_memory ((rdata_size+15)/16, &sel);
    if (seg < 0)
       return (0);

    _pkt_inf->rm_seg = seg;
    _pkt_inf->rm_sel = sel;
    rm_base = (_pkt_inf->rm_seg << 4);

    for (i = 0; i < (int)rdata_size; i += 4)  /* clear area */
        POKEL (_pkt_inf->rm_seg, i, 0);
  }

#elif (DOSX & DOS4GW)
  {
    WORD seg, sel;

    seg = dpmi_real_malloc (rdata_size, &sel);
    if (!seg)
       return (0);

    _pkt_inf->rm_seg = seg;
    _pkt_inf->rm_sel = sel;
    rm_base = (_pkt_inf->rm_seg) << 4;
    memset ((void*)rm_base, 0, rdata_size);
  }

#elif (DOSX & PHARLAP)
  {
    WORD largest, seg;
    int  i;

    if (_dx_real_alloc ((rdata_size+15)/16, &seg, &largest) != 0)
       return (0);

    _pkt_inf->rm_seg = seg;
    _pkt_inf->rm_sel = 0;
    RP_SET (rm_base, 0, _pkt_inf->rm_seg);
    for (i = 0; i < (int)rdata_size; i += 4)
        POKEL (_pkt_inf->rm_seg, i, 0);
  }

#elif (DOSX & X32VM)
  {
    int i;

    rm_base = _x32_real_alloc (rdata_size);
    if (!rm_base)
       return (0);

    _pkt_inf->rm_seg = _x32_real_segment (rm_base);
    _pkt_inf->rm_sel = 0;
    for (i = 0; i < (int)rdata_size; i += 4)
        POKEL (_pkt_inf->rm_seg, i, 0);
  }

#elif (DOSX & POWERPAK)
  {
    WORD seg, sel;
    int  i;

    seg = dpmi_real_malloc ((rdata_size+15)/16, &sel);
    if (!seg)
       return (0);

    _pkt_inf->rm_seg = seg;
    _pkt_inf->rm_sel = sel;
    RP_SET (rm_base, 0, _pkt_inf->rm_seg);
    for (i = 0; i < (int)rdata_size; i += 4)
        POKEL (_pkt_inf->rm_seg, i, 0);
  }

#elif (DOSX == 0)
  {
    char _far *buf = _fcalloc (rdata_size, 0);

    if (!buf)
       return (0);
    _pkt_inf->rm_seg = FP_SEG (buf);
    rm_base = (DWORD) buf;
  }

#else
  #error Help!
#endif

  pktq_far_init (sizeof(struct pkt_rx_element), RX_BUFS, ASMPKT_INF);
  _pkt_inf->pkt_queue.num_buf = RX_BUFS;
  return (rm_base);
}
Пример #6
0
void allocateTables(void)
{
    logTab =  _fcalloc(cfg.MAXLOGTAB+1, sizeof(struct lTable));

    if (logTab == NULL)
        crashout("Error allocating logTab \n");

#ifdef NEWMSGTAB
    createMsgTab();
#else

    msgTab_mtmsgflags = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mtmsgflags));
    msgTab_mtmsgLocLO = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mtmsgLocLO));
    msgTab_mtmsgLocHI = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mtmsgLocHI));
    msgTab_mtroomno   = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mtroomno));
    msgTab_mttohash   = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mttohash));
    msgTab_mtauthhash = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mtauthhash));
    msgTab_mtomesg    = _fcalloc(cfg.nmessages+1, sizeof(*msgTab_mtomesg));

    if (msgTab_mtmsgflags == NULL || 
        msgTab_mtmsgLocLO == NULL ||
        msgTab_mtmsgLocHI == NULL ||
        msgTab_mtroomno   == NULL || 
        msgTab_mttohash   == NULL || 
        msgTab_mtauthhash == NULL ||
        msgTab_mtomesg    == NULL )
        crashout("Error allocating msgTab \n");
#endif

    if (
          ((lBuf2   = _fcalloc(1,          sizeof(struct logBuffer ))) == NULL)
       || ((talleyBuf=_fcalloc(1,          sizeof(struct talleyBuffer))) == NULL)
       || ((doors   = _fcalloc(MAXDOORS,   sizeof(struct ext_door  ))) == NULL)
       || ((edit    = _fcalloc(MAXEXTERN,  sizeof(struct ext_editor))) == NULL)
       || ((hallBuf = _fcalloc(1,          sizeof(struct hallBuffer))) == NULL)
       || ((extrn   = _fcalloc(MAXEXTERN,  sizeof(struct ext_prot  ))) == NULL)
       || ((roomTab = _fcalloc(MAXROOMS,   sizeof(struct rTable    ))) == NULL)
       || ((msgBuf  = _fcalloc(1,          sizeof(struct msgB      ))) == NULL)
       || ((msgBuf2 = _fcalloc(1,          sizeof(struct msgB      ))) == NULL)

#ifdef NEWMSGTAB
       || ((roomPos = _fcalloc(MAXROOMS,   2                        )) == NULL)
#else
       || ((roomPos = _fcalloc(MAXROOMS,   1                        )) == NULL)
#endif

       )
    {
        crashout("Can not allocate space for tables");
    }
}
Пример #7
0
BOOL TranslateMapping(LPWORD *ppMapping, PCSTR String)
{	WORD Result[512];
	WORD *p = Result;
	INT  c;

	assert(sizeof(Keys) == sizeof(KeyNames)/sizeof(KeyNames[0])-1);
	*p = 0;
	while (*String) {
		assert(p < Result + sizeof(Result)/sizeof(WORD) - 1);
		switch (*String) {
			case '\'':
			case '"':	/*WM_CHARs*/
						c = *String;
						while (*++String && *String != c) {
							assert(p < Result + sizeof(Result)/sizeof(WORD) - 1);
							p[1] = p[0];
							*p |= MAP_CHAR | (BYTE)*String;
							if ((BYTE)*String < ' ') *p |= MAP_CTRL | '@';
							++p;
						}
						*p = 0;
						if (*String) ++String;
						break;

			case ' ':	/*separator with no meaning*/
						++String;
						break;

			default:	/*check several strings...*/
						if (strncmp(String, "Ctrl+", 5) == 0 ||
							strncmp(String, "Strg+", 5) == 0) {
								*p |= MAP_CTRL;
								String += 5;
								break;
						}
						if (strncmp(String, "Shift+",    6) == 0 ||
							strncmp(String, "Umschalt+", 9) == 0 ||
							strncmp(String, "Mayus+",    6) == 0 ||
							strncmp(String, "Mayús+",    6) == 0 ||
							strncmp(String, "Maj+",      4) == 0) {
								*p |= MAP_SHIFT;
								String = strchr(String, '+') + 1;
								break;
						}
						if (strncmp(String, "Alt+", 4) == 0) {
							*p |= MAP_ALT;
							String += 4;
							break;
						}
						{	PSTR *pn;

							for (pn = KeyNames; *pn != NULL; ++pn) {
								if (strncmp(String, *pn, lstrlen(*pn)) == 0) {
									String += lstrlen(*pn);
									*p |= Keys[pn-KeyNames];
									if (HandleAsWmChar(*p))	*p |= MAP_CHAR;
									else					*p |= MAP_KEYDOWN;
									break;
								}
							}
							if (*pn == NULL) *p |= MAP_CHAR | (BYTE)*String++;
							if (*p & MAP_CHAR) {
								if ((BYTE)*p < ' ') *p |= MAP_CTRL | '@';
								if (*p & MAP_CTRL
										&& (BYTE)*p >= 'a' && (BYTE)*p <= 'z')
									*p &= ~('a'-'A');
								if (*p == (MAP_CTRL | MAP_ALT | MAP_CHAR | 'V'))
									*p ^= MAP_KEYDOWN | MAP_CHAR;
							}
							*++p = 0;
						}
						break;
		}
	}
	*p++ = 0;
	if ((*ppMapping = _fcalloc(p - Result, sizeof(WORD))) == NULL) {
		ErrorBox(MB_ICONSTOP, 300, 5);
		return (FALSE);
	}
	_fmemcpy(*ppMapping, Result, (p - Result) * sizeof(WORD));
	return (TRUE);
}