From: Joseph Turner <joseph@ushin.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org, schwab@suse.de, adam@alphapapa.net
Subject: Re: How to get buffer byte length (not number of characters)?
Date: Wed, 21 Aug 2024 16:52:39 -0700 [thread overview]
Message-ID: <871q2hfn7c.fsf@ushin.org> (raw)
In-Reply-To: <86y14pu5rp.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 21 Aug 2024 20:47:54 +0300")
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Joseph Turner <joseph@ushin.org>
>> Cc: emacs-devel@gnu.org, Andreas Schwab <schwab@suse.de>, Adam Porter
>> <adam@alphapapa.net>
>> Date: Wed, 21 Aug 2024 02:20:09 -0700
>>
>> Let's say I create a textual hyperdrive file using hyperdrive.el, and
>> then I upload it by sending its contents via curl to the local HTTP
>> server. What coding system should be used when the file is uploaded?
>>
>> Let's say I have a `iso-latin-1'-encoded file "foo.txt" on my local
>> filesystem. I upload this encoded file to my hyperdrive by passing the
>> filename to curl, which uploads the bytes with no conversion. Then I
>> open the "foo.txt" hyperdrive file using hyperdrive.el, which receives
>> the contents via curl from the local HTTP server. In the hyperdrive
>> file buffer, buffer-file-coding-system should be `iso-latin-1' (right?).
>
> It's what I would expect, yes. But you can try it yourself, of course
> and make sure it is indeed what happens.
>
>> Then, I edit the buffer and save it to the hyperdrive again with
>> hyperdrive.el, which this time sends the modified contents over the wire
>> to curl. The uploaded file should be `iso-latin-1'-encoded (right?).
>
> Again, that'd be my expectation. But it's better to test this
> assumption.
>
>> Currently, plz.el always creates the curl subprocess like so:
>>
>> (make-process :coding 'binary ...)
>>
>> https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/plz.el?h=externals-release/plz#n519
>>
>> Does this DTRT?
>
> It could be TRT if plz.el encodes the buffer text "by hand" before
> sending the results to curl and decodes it when it receives text from
> curl. Which I think is what happens there.
plz.el does not manually encode buffer text *within Emacs* when sending
requests to curl, but by default, plz.el sends data to curl with --data,
which tells curl to strip CR and newlines. With the :body-type 'binary
argument, plz.el instead uses --data-binary, which does no conversion.
We don't want to strip newlines from hyperdrive files, so we always use
:body-type 'binary when sending buffer contents. Should hyperdrive.el
encode data with `buffer-file-coding-system' before passing to plz.el?
When receiving text from curl, plz.el optionally decodes the text
according to the charset in the 'Content-Type' header, e.g., "text/html;
charset=utf-8" or utf-8 if no charset is found.
Perhaps hyperdrive.el should check the 'Content-Type' header charset,
then fallback to guessing the coding system based on filename and file
contents with `set-auto-coding' (to avoid decoding images, etc.), and
then finally fallback to something else?
Thank you!
Joseph
next prev parent reply other threads:[~2024-08-21 23:52 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-20 7:10 How to get buffer byte length (not number of characters)? Joseph Turner
2024-08-20 7:51 ` Joseph Turner
2024-08-20 11:20 ` Eli Zaretskii
2024-08-20 11:15 ` Eli Zaretskii
2024-08-21 9:20 ` Joseph Turner
2024-08-21 17:47 ` Eli Zaretskii
2024-08-21 23:52 ` Joseph Turner [this message]
2024-08-22 4:06 ` Eli Zaretskii
2024-08-22 7:24 ` Joseph Turner
2024-08-22 11:04 ` Eli Zaretskii
2024-08-22 18:29 ` Joseph Turner
2024-08-22 18:44 ` Eli Zaretskii
2024-08-22 19:32 ` tomas
2024-08-23 3:56 ` Joseph Turner
2024-08-23 7:02 ` Eli Zaretskii
2024-08-23 7:37 ` Joseph Turner
2024-08-23 12:34 ` Eli Zaretskii
2024-08-23 7:43 ` Joseph Turner
2024-08-23 12:38 ` Eli Zaretskii
2024-08-23 16:59 ` Joseph Turner
2024-08-23 17:35 ` Eli Zaretskii
2024-08-23 20:37 ` Joseph Turner
2024-08-24 6:14 ` Joseph Turner
2024-08-22 12:26 ` Adam Porter
2024-08-22 12:47 ` tomas
2024-08-23 6:28 ` Adam Porter
2024-08-22 13:50 ` Eli Zaretskii
2024-08-23 6:31 ` Adam Porter
2024-08-23 6:51 ` Eli Zaretskii
2024-08-23 7:07 ` Joseph Turner
2024-08-23 7:58 ` Joseph Turner
2024-08-22 7:09 ` Andreas Schwab
2024-08-22 7:30 ` Joseph Turner
2024-08-22 11:05 ` Eli Zaretskii
2024-08-26 6:37 ` Joseph Turner
2024-08-26 6:49 ` Joseph Turner
2024-08-26 11:22 ` Eli Zaretskii
2024-08-27 4:48 ` Joseph Turner
2024-08-26 11:20 ` Eli Zaretskii
2024-08-20 11:24 ` Andreas Schwab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871q2hfn7c.fsf@ushin.org \
--to=joseph@ushin.org \
--cc=adam@alphapapa.net \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=schwab@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.