alist representing unpacked field data.
@defun bindat-unpack spec raw-data &optional pos
-This function unpacks data from the byte array @code{raw-data}
+This function unpacks data from the unibyte string or byte
+array @code{raw-data}
according to @var{spec}. Normally this starts unpacking at the
beginning of the byte array, but if @var{pos} is non-@code{nil}, it
specifies a zero-based starting position to use instead.
This function returns a byte array packed according to @var{spec} from
the data in the alist @var{struct}. Normally it creates and fills a
new byte array starting at the beginning. However, if @var{raw-data}
-is non-@code{nil}, it specifies a pre-allocated string or vector to
+is non-@code{nil}, it specifies a pre-allocated unibyte string or vector to
pack into. If @var{pos} is non-@code{nil}, it specifies the starting
offset for packing into @code{raw-data}.
-
-@c ??? Isn't this a bug? Shouldn't it always be unibyte?
-Note: The result is a multibyte string; use @code{string-make-unibyte}
-on it to make it unibyte if necessary.
@end defun
@defun bindat-ip-to-string ip
(with-temp-buffer
(set-buffer-multibyte nil)
(insert
- (string-make-unibyte
- (bindat-pack
- fcookie-index-spec
- `((:version . 2)
- (:count . ,count)
- (:longest . ,max)
- (:shortest . ,min)
- (:flags . 0)
- (:delim . ,delim)
- (:offset . ,(mapcar (lambda (o)
- (list (cons :foo o)))
- (nreverse offsets)))))))
+ (bindat-pack
+ fcookie-index-spec
+ `((:version . 2)
+ (:count . ,count)
+ (:longest . ,max)
+ (:shortest . ,min)
+ (:flags . 0)
+ (:delim . ,delim)
+ (:offset . ,(mapcar (lambda (o)
+ (list (cons :foo o)))
+ (nreverse offsets))))))
(let ((coding-system-for-write 'raw-text-unix))
(write-file (or index (concat cookies ".dat")))))))
@end lisp