+
+/* Write a LF_LONGLINK or LF_LONGNAME record. */
+write_long (p, type)
+ char *p;
+ char type;
+{
+ int size = strlen (p) + 1;
+ int bufsize;
+ union record *header;
+
+ /* Link name won't fit, so we write
+ an LF_LONGLINK record. */
+ hstat.st_size = size;
+ header = start_header ("././@LongLink", &hstat);
+ header->header.linkflag = type;
+ finish_header (header);
+
+ header = findrec ();
+
+ bufsize = endofrecs ()->charptr - header->charptr;
+
+ while (bufsize < size)
+ {
+ bcopy (p, header->charptr, bufsize);
+ p += bufsize;
+ size -= bufsize;
+ userec (header + (bufsize - 1)/RECORDSIZE);
+ header = findrec ();
+ bufsize = endofrecs ()->charptr - header->charptr;
+ }
+ bcopy (p, header->charptr, size);
+ bzero (header->charptr + size, bufsize - size);
+ userec (header + (size - 1)/RECORDSIZE);
+}