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; }
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)); */ }
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); }
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); }
/* * 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); }
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"); } }
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); }