Hi DM,
Recently I've been working on trying to get SlyEdit to behave in a
way that it could be used to edit general files (and specifically,
SSH keys & such, as it seems that might be useful at some point).
I'm at a point where I've started doing a test to make sure SlyEdit
is saving the file correctly:
There's a system set up where I have an SSH key shared with it so
that I can SSH to it without entering a password, and my test is
basically this: 1. Move my local ~/.ssh/id_rsa to a different place,
and open it in a text editor (so I can copy it) 2. Edit ~/.ssh/id_rsa
with SlyEdit (which at this point is a new file), then copy the
contents of id_rsa from the text editor and paste it into my terminal
session with SlyEdit, and save the file 3. Try to SSH to that remote
system from my BBS machine and see if it's successful
After this, id_rsa looks fine, but SSH authentication fails (ssh says
it loads id_rsa but it says "error in libcrypto" and prompts me for a password). I've found that the reason seems to be id_rsa has
DOS-style line endings (with \r\n) - I verified with a hex editor and
saw that was indeed the case. If I convert id_rsa with dos2unix, I'm
able to successfully SSH to the other PC.
SlyEdit is writing the lines using the File.writeln() function. I'm
running my BBS on Linux; should writeln() be expected to write with
\n line endings on Linux?
As a test, I tried having SlyEdit use write() (instead of writln()
and append "\n" at the end of each line, but the lines in id_rsa
still end with \r\n. I also tried opening the file with binary (as
"wb") but the file still had \r\n line endings.
Taking a step back, should I even be worrying about the line endings
when saving files with SlyEdit? I'm not sure what the best course of
action is here.
After this, id_rsa looks fine, but SSH authentication fails (ssh says it loads id_rsa but it says "error in libcrypto" and prompts me for a password). I've found that the reason seems to be id_rsa has DOS-style line endings (with \r\n) - I verified with a hex editor and saw that was indeed the case. If I convert id_rsa with dos2unix, I'm able to successfully SSH to the other PC.
SlyEdit is writing the lines using the File.writeln() function. I'm running my BBS on Linux; should writeln() be expected to write with \n line endings on Linux?
On Windows, File.writeln() will append either "\n" or "\r\n" depending on how the file was opened. If it was opened in text mode (the "t" open flag), then "\r\n" is used.
On Linux, the "t" open mode flag is ignored and File.writeln() will always save the text with "\n" appended. Example:
var f = new File("test.blah");
f.open("w");
f.writeln();
Creates a file with a single byte:
$ hd /sbbs/ctrl/test.blah
00000000 0a |.| 00000001
If your edited file is ending up with CRLF terminated lines, that could just be the function of the console.editfile() method (if you're using that) and the underlying C++ methods that post-process the edited the file.
In my test, after creating id_rsa using console.editfile(), SSH fails to authenticate me, which seems to me is caused by the difference in line endings.
Is there a way to call console.editfile() so that it won't do any post-processing of the file?
Also, I'm a little unclear on why the underlying C++ methods would change the line endings to \r\n on Linux. Could that be a bug, or is it intended behavior?
Re: File: writeln() and line endings
By: Nightfox to Digital Man on Sun Apr 27 2025 05:27 pm
In my test, after creating id_rsa using console.editfile(), SSH fails to authenticate me, which seems to me is caused by the difference in line endings.
Is there a way to call console.editfile() so that it won't do any post-processing of the file?
Also, I'm a little unclear on why the underlying C++ methods would change the line endings to \r\n on Linux. Could that be a bug, or is it intended behavior?
That is intended behavior. I'll look into retaining the line-ending style on edited text files.
Also, I'm a little unclear on why the underlying C++ methods would change
the line endings to \r\n on Linux. Could that be a bug, or is it intended
behavior?
That is intended behavior. I'll look into retaining the line-ending style on edited text files.
Also, I'm a little unclear on why the underlying C++ methods would change
the line endings to \r\n on Linux. Could that be a bug, or is it intended
behavior?
That is intended behavior. I'll look into retaining the line-ending style
on edited text files.
Each editor actually has this behavior configured in SCFG: "Expand Line Feeds to CRLF" - how is yours set?
Re: File: writeln() and line endings
By: Digital Man to Nightfox on Sun Apr 27 2025 09:36 pm
Also, I'm a little unclear on why the underlying C++ methods would change
the line endings to \r\n on Linux. Could that be a bug, or is it intended
behavior?
That is intended behavior. I'll look into retaining the line-ending style
on edited text files.
Each editor actually has this behavior configured in SCFG: "Expand Line Feeds to CRLF" - how is yours set?
Mine is set to "Yes". I guess that would explain it.
That has been in place for SlyEdit for quite a while now.. I'm not sure it would be best to change it, or leave it and make a workaround.
Each editor actually has this behavior configured in SCFG: "Expand
Line Feeds to CRLF" - how is yours set?
Mine is set to "Yes". I guess that would explain it.
That has been in place for SlyEdit for quite a while now.. I'm not sure it
would be best to change it, or leave it and make a workaround.
Try changing and seeing what if any negative side effects result?
Re: File: writeln() and line endings
By: Digital Man to Nightfox on Mon Apr 28 2025 11:49 am
Each editor actually has this behavior configured in SCFG: "Expand
Line Feeds to CRLF" - how is yours set?
Mine is set to "Yes". I guess that would explain it.
That has been in place for SlyEdit for quite a while now.. I'm not sure it
would be best to change it, or leave it and make a workaround.
Try changing and seeing what if any negative side effects result?
I've enabled that. So far I don't see any negative side effects..
Double-check whether messages posted with SlyEdit configured in that manner have LF or CRLF terminated lines. By standard, SMB message text is supposed to be CRLF-terminated, but it might not be guaranteed when using an editor that terminates lines with LF only and that "Expland Line Feeds" option is disabled. Or maybe LF-terminated message text is okay now - I don't remember.
Re: File: writeln() and line endings
By: Digital Man to Nightfox on Mon Apr 28 2025 02:25 pm
Double-check whether messages posted with SlyEdit configured in that manner have LF or CRLF terminated lines. By standard, SMB message text is supposed to be CRLF-terminated, but it might not be guaranteed when using an editor that terminates lines with LF only and that "Expland Line Feeds" option is disabled. Or maybe LF-terminated message text is okay now - I don't remember.
When configured with 'Expand line feeds to CRLF' was false, SlyEdit saved my message with just a \n. My last message posted here was like that. I've made an update to SlyEdit (my test version) to try to ensure it seaves messages with CRLF line endings.
When configured with 'Expand line feeds to CRLF' was false, SlyEdit saved
my message with just a \n. My last message posted here was like that.
I've made an update to SlyEdit (my test version) to try to ensure it seaves
messages with CRLF line endings.
You probably shouldn't need to change SlyEdit. If CRLFs are absolutely required by Synchronet, it should do that expansion from LF to CRLF when necessary (I think happens upon message *display* now).
Re: File: writeln() and line endings
By: Digital Man to Nightfox on Mon Apr 28 2025 03:58 pm
When configured with 'Expand line feeds to CRLF' was false, SlyEdit saved
my message with just a \n. My last message posted here was like that.
I've made an update to SlyEdit (my test version) to try to ensure it seaves
messages with CRLF line endings.
You probably shouldn't need to change SlyEdit. If CRLFs are absolutely required by Synchronet, it should do that expansion from LF to CRLF when necessary (I think happens upon message *display* now).
Ah, I won't change SlyEdit to do that then.
Sysop: | Mysteria |
---|---|
Location: | Fremont, CA |
Users: | 11 |
Nodes: | 10 (0 / 10) |
Uptime: | 142:17:37 |
Calls: | 61 |
Calls today: | 61 |
Messages: | 6,322 |
Posted today: | 4 |