+ if (p->c_cc & 01) {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ (void) putc(c, p);
+ (void) putc(c>>8, p);
+#else
+ (void) putc(c>>8, p);
+ (void) putc(c, p);
+#endif
+ } else {
+ if ((cp = p->c_cl) == NULL || p->c_cc < 0 ) {
+ if ((bp = cfreelist) == NULL) {
+ splx(s);
+ return (-1);
+ }
+ cfreelist = bp->c_next;
+ cfreecount -= CBSIZE;
+ bp->c_next = NULL;
+ p->c_cf = cp = bp->c_info;
+ } else if (((int)cp & CROUND) == 0) {
+ bp = cbptr(cp) - 1;
+ if ((bp->c_next = cfreelist) == NULL) {
+ splx(s);
+ return (-1);
+ }
+ bp = bp->c_next;
+ cfreelist = bp->c_next;
+ cfreecount -= CBSIZE;
+ bp->c_next = NULL;
+ cp = bp->c_info;
+ }
+#if defined(vax)
+ *(word_t *)cp = c;
+#else
+ ((u_char *)cp)[0] = c>>8;
+ ((u_char *)cp)[1] = c;
+#endif
+ p->c_cl = cp + sizeof (word_t);
+ p->c_cc += sizeof (word_t);
+ }