Raymond Toy pushed to branch issue-156-take-2-nan-comparison at cmucl / cmucl
Commits:
a886eca5 by Raymond Toy at 2023-12-08T15:49:42-08:00
Update to current HEAD
Update .gitlab-ci.yml to use the bootstrap file for this change.
Move the bootstrap from 21d to 21e and rename it appropriately to show
what the snapshot is needed to build this.
- - - - -
2 changed files:
- .gitlab-ci.yml
- src/bootfiles/21d/boot-2021-07-3.lisp → src/bootfiles/21e/boot-2023-08-1.lisp
Changes:
=====================================
.gitlab-ci.yml
=====================================
@@ -1,7 +1,7 @@
variables:
download_url: "https://common-lisp.net/project/cmucl/downloads/snapshots/2023/08"
version: "2023-08-x86"
- bootstrap: "-B boot-2023-08"
+ bootstrap: "-B boot-2023-08 -B 2023-08-1"
stages:
=====================================
src/bootfiles/21d/boot-2021-07-3.lisp → src/bootfiles/21e/boot-2023-08-1.lisp
=====================================
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/a886eca53758acba9dd23c6…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/a886eca53758acba9dd23c6…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-156-take-2-nan-comparison at cmucl / cmucl
Commits:
4e433b83 by Raymond Toy at 2023-07-05T06:40:08-07:00
Set LANG in build.sh
For some reason, on my Mac system, LANG isn't set and sometimes git
messages are in Korean. So for consistency, set LANG in build.sh to a
known value that should work everywhere.
- - - - -
da69492b by Raymond Toy at 2023-07-17T15:07:01+00:00
Fix #234: Make :ascii external format builtin.
- - - - -
635d07ca by Raymond Toy at 2023-07-17T15:07:04+00:00
Merge branch 'issue-234-make-ascii-format-builtin' into 'master'
Fix #234: Make :ascii external format builtin.
Closes #234
See merge request cmucl/cmucl!155
- - - - -
0a35575a by Raymond Toy at 2023-07-17T15:07:47+00:00
Fix #242: Mask out unwanted bits for integer results
- - - - -
5d4b0622 by Raymond Toy at 2023-07-17T15:07:49+00:00
Merge branch 'issue-242-c-call-char-result-wrong' into 'master'
Fix #242: Mask out unwanted bits for integer results
Closes #242
See merge request cmucl/cmucl!154
- - - - -
bdd7294f by Raymond Toy at 2023-07-21T19:15:10+00:00
Fix #171: Readably print pathnames with :unspecific
- - - - -
4bce99fc by Raymond Toy at 2023-07-21T19:15:11+00:00
Merge branch 'issue-171-readable-unspecific-pathnames' into 'master'
Fix #171: Readably print pathnames with :unspecific
Closes #171
See merge request cmucl/cmucl!134
- - - - -
d37a3150 by Raymond Toy at 2023-07-22T00:19:38+00:00
Fix #248: Disassemble MOVS inst nicely
- - - - -
95dfdcf3 by Raymond Toy at 2023-07-22T00:19:39+00:00
Merge branch 'issue-248-disassemble-movs-nicely' into 'master'
Fix #248: Disassemble MOVS inst nicely
Closes #248
See merge request cmucl/cmucl!156
- - - - -
8c6e050a by Raymond Toy at 2023-07-21T18:06:08-07:00
Remove extraneous debugging print
Introduced in commit [0a35575aa0] for debugging and we forgot to
remove it.
- - - - -
a85ad7cf by Raymond Toy at 2023-07-23T12:18:48-07:00
Update release notes with closed issues
Should have been updated when the issue was closed, but we forgot.
Update now.
- - - - -
d5c23293 by Raymond Toy at 2023-07-23T15:07:27-07:00
Update cmucl.pot
Forgot to update cmucl.pot in previous commits/merges that changed
docstrings for various things. Update it now.
- - - - -
f577eda6 by Raymond Toy at 2023-07-23T22:38:00+00:00
Fix #244: Add c-call:signed-char
- - - - -
0411c386 by Raymond Toy at 2023-07-23T22:38:01+00:00
Merge branch 'issue-244-c-call-signed-char' into 'master'
Fix #244: Add c-call:signed-char
Closes #244
See merge request cmucl/cmucl!157
- - - - -
3e8b0a12 by Raymond Toy at 2023-07-26T13:43:15+00:00
Fix #245: Replace egrep with grep -E
- - - - -
24152f4d by Raymond Toy at 2023-07-26T13:43:15+00:00
Merge branch 'issue-245-replace-egrep-with-grep' into 'master'
Fix #245: Replace egrep with grep -E
Closes #245
See merge request cmucl/cmucl!158
- - - - -
5b27393f by Carl Shapiro at 2023-07-30T21:15:48-07:00
Guard against a division by zero in test run reports
- - - - -
a7300f03 by Carl Shapiro at 2023-07-31T05:28:58+00:00
Merge branch 'zero-tests' into 'master'
Guard against a division by zero when reporting test results
See merge request cmucl/cmucl!161
- - - - -
33f11724 by Raymond Toy at 2023-08-12T07:34:55-07:00
Replace latin-1 character Latin_Small_Letter_I_With_Diaeresis
In files/math.lisp, the word "naive" is spelled using the character
\Latin_Small_Letter_I_With_Diaeresis. However, when compiling locally
with a UTF-8 encoding (which is the default), this is invalid. The
letter needs to be encoded as 2 octets. I'm too lazy to figure out
how to get emacs to insert the correct encoded character so I'm
replacing it with a simple "i". This makes the file pure ASCII, so it
should work fine with a UTF-8 encoding.
- - - - -
a8ced15b by Carl Shapiro at 2023-08-14T04:45:23+00:00
Address #196: Fix issues with mapping and nconc accumulation
- - - - -
310e41eb by Carl Shapiro at 2023-08-14T04:45:41+00:00
Merge branch 'mapcan' into 'master'
Address #196: Fix issues with mapping and nconc accumulation
See merge request cmucl/cmucl!162
- - - - -
19a305de by Raymond Toy at 2023-08-16T14:28:11+00:00
Address #240: Speed up set-difference
- - - - -
9d593e3a by Raymond Toy at 2023-08-16T14:28:55+00:00
Merge branch 'issue-240-set-diff-with-hash-table' into 'master'
Address #240: Speed up set-difference
Closes #240
See merge request cmucl/cmucl!153
- - - - -
55c01f44 by Raymond Toy at 2023-08-17T13:33:59+00:00
Address #240: Speed up intersection by using a hashtable
- - - - -
14d847f0 by Raymond Toy at 2023-08-17T13:34:15+00:00
Merge branch 'issue-240-intersection-with-hash-table' into 'master'
Address #240: Speed up intersection by using a hashtable
Closes #240
See merge request cmucl/cmucl!160
- - - - -
c9ce7574 by Raymond Toy at 2023-08-17T13:36:18+00:00
Address #240: Speed up union by using a hashtable
- - - - -
5c7536f0 by Raymond Toy at 2023-08-17T13:36:44+00:00
Merge branch 'issue-240-union-with-hash-table' into 'master'
Address #240: Speed up union by using a hashtable
Closes #240
See merge request cmucl/cmucl!159
- - - - -
181508a9 by Raymond Toy at 2023-08-17T06:47:03-07:00
Remove old version of union
Oops. Forgot to remove this in !159, so we do it now.
- - - - -
a70248dd by Raymond Toy at 2023-08-19T13:38:11+00:00
Fix #249: Replace lea instruction for arithmetic
- - - - -
5b3e11f9 by Raymond Toy at 2023-08-19T13:38:34+00:00
Merge branch 'issue-249-replace-lea-in-arith' into 'master'
Fix #249: Replace lea instruction for arithmetic
Closes #249
See merge request cmucl/cmucl!163
- - - - -
f9ccc188 by Raymond Toy at 2023-08-21T18:03:25+00:00
Fix #252: Add script to run ansi-tests
- - - - -
eab9b876 by Raymond Toy at 2023-08-21T18:04:16+00:00
Merge branch 'issue-252-script-to-run-ansi-tests' into 'master'
Fix #252: Add script to run ansi-tests
Closes #252
See merge request cmucl/cmucl!165
- - - - -
0b497d8c by Raymond Toy at 2023-08-21T20:15:07+00:00
Address #240: Speed up subsetp with a hashtable
- - - - -
bfae1626 by Raymond Toy at 2023-08-21T20:15:21+00:00
Merge branch 'issue-240-subsetp-with-hash-table' into 'master'
Address #240: Speed up subsetp with a hashtable
Closes #240
See merge request cmucl/cmucl!164
- - - - -
afaeb420 by Raymond Toy at 2023-08-22T14:00:25+00:00
Fix #253: Block-compile list-to-hashtable and callers
- - - - -
a5b2c0f8 by Raymond Toy at 2023-08-22T14:02:24+00:00
Merge branch 'issue-253-block-compile-list-to-hashtable' into 'master'
Fix #253: Block-compile list-to-hashtable and callers
Closes #253
See merge request cmucl/cmucl!166
- - - - -
427aaa31 by Raymond Toy at 2023-08-22T19:50:31-07:00
Fix warning that SIGNED-CHAR is also exported from C-CALL
When we added `c-call:signed-char`, we forgot to also add it to the
package exports list for the `c-call` package. Add it to get rid of
the compiler warning.
- - - - -
9581820a by Raymond Toy at 2023-08-25T13:32:42+00:00
Address #240: Clean up hashtable implementation of set functions
- - - - -
39817da2 by Raymond Toy at 2023-08-25T13:32:51+00:00
Merge branch 'issue-240-clean-up-hashtable-impl' into 'master'
Address #240: Clean up hashtable implementation of set functions
See merge request cmucl/cmucl!168
- - - - -
87e54e03 by Raymond Toy at 2023-08-25T14:15:52+00:00
Address #240: Use hashtable for nset-diff, nunion, nintersection
- - - - -
4542d55e by Raymond Toy at 2023-08-25T14:16:04+00:00
Merge branch 'issue-240-add-hashtable-for-destructive-set-ops' into 'master'
Address #240: Use hashtable for nset-diff, nunion, nintersection
See merge request cmucl/cmucl!167
- - - - -
ffe3625a by Raymond Toy at 2023-08-29T13:01:16+00:00
Address #240: Rename processing macros for set operations
- - - - -
747a82ba by Raymond Toy at 2023-08-29T13:04:36+00:00
Merge branch 'issue-240-clean-up-hashtable-for-sets-impl' into 'master'
Address #240: Rename processing macros for set operations
See merge request cmucl/cmucl!171
- - - - -
d08a26c4 by Raymond Toy at 2023-08-29T14:53:04-07:00
Remove extra closing paren after %print-pathname
Gets rid of a simple compiler warning.
- - - - -
917c4240 by Raymond Toy at 2023-08-30T17:38:23+00:00
Fix #258: Remove get-page-size from linux-os.lisp
- - - - -
77dee627 by Raymond Toy at 2023-08-30T17:38:40+00:00
Merge branch 'issue-258-remove-get-page-size-from-linux-os' into 'master'
Fix #258: Remove get-page-size from linux-os.lisp
Closes #258
See merge request cmucl/cmucl!172
- - - - -
db531fef by Raymond Toy at 2023-08-30T17:59:50+00:00
Address #240: Add hashtable for set-exclusive-or
- - - - -
766c6aa5 by Raymond Toy at 2023-08-30T18:00:08+00:00
Merge branch 'issue-240-add-hashtable-set-exclusive-or' into 'master'
Address #240: Add hashtable for set-exclusive-or
See merge request cmucl/cmucl!169
- - - - -
961c96ad by Raymond Toy at 2023-08-30T11:12:42-07:00
Update release notes with fixed issues
- - - - -
3c318784 by Raymond Toy at 2023-09-09T02:27:58+00:00
Fix #261: Remove old get-system-info in bsd-os.lisp
- - - - -
a96a03e6 by Raymond Toy at 2023-09-09T02:28:11+00:00
Merge branch 'issue-261-remove-bsd-get-system-info' into 'master'
Fix #261: Remove old get-system-info in bsd-os.lisp
Closes #261
See merge request cmucl/cmucl!174
- - - - -
c7d29a31 by Raymond Toy at 2023-10-14T06:57:56-07:00
Use snapshot 2023-08 for running CI.
- - - - -
24fd8012 by Raymond Toy at 2023-11-14T23:44:10+00:00
Fix #265: Broken CI on Mac OS X
- - - - -
cdaa5def by Raymond Toy at 2023-11-14T23:44:44+00:00
Merge branch 'issue-265-ci-broken-on-mac-os' into 'master'
Fix #265: Broken CI on Mac OS X
Closes #265
See merge request cmucl/cmucl!176
- - - - -
fb29f7d9 by Raymond Toy at 2023-11-24T17:43:34+00:00
Fix #259: Move *software-version* from LISP to SYSTEM package
- - - - -
1af08245 by Raymond Toy at 2023-11-24T17:43:45+00:00
Merge branch 'issue-259-b-use-right-software-version' into 'master'
Fix #259: Move *software-version* from LISP to SYSTEM package
Closes #259
See merge request cmucl/cmucl!175
- - - - -
6b9f32f5 by Tarn Burton at 2023-11-29T22:39:39+00:00
Add support for Gray stream implementation of file-length
- - - - -
b218d29c by Raymond Toy at 2023-11-29T22:39:54+00:00
Merge branch 'gray-file-length' into 'master'
Add support for Gray stream implementation of file-length
See merge request cmucl/cmucl!179
- - - - -
a6854bb6 by Raymond Toy at 2023-11-30T13:47:10+00:00
Fix #269: Add function to get user's home directory
- - - - -
8e067da9 by Raymond Toy at 2023-11-30T13:47:20+00:00
Merge branch 'issue-269-unix-get-user-homedir' into 'master'
Fix #269: Add function to get user's home directory
Closes #269
See merge request cmucl/cmucl!178
- - - - -
bc8cb405 by Raymond Toy at 2023-12-07T23:09:31+00:00
Fix #266: Support ~user in namestrings
- - - - -
81f0d53c by Raymond Toy at 2023-12-07T23:09:36+00:00
Merge branch 'issue-266-b-tilde-pathname-support' into 'master'
Fix #266: Support ~user in namestrings
Closes #266
See merge request cmucl/cmucl!180
- - - - -
0364a45b by Raymond Toy at 2023-12-07T15:25:03-08:00
Update pot file
`stream-line-length` added a docstring that we forgot to add to our
pot file.
- - - - -
b0fc47bd by Raymond Toy at 2023-12-08T05:53:23-08:00
Declare NAME to be a string in get-user-homedir-namestring
For better error-checking, declare that the arg NAME for
get-user-homedir-namestring must be a string, obviously.
- - - - -
21560843 by Raymond Toy at 2023-12-08T15:36:45-08:00
Merge branch 'master' into issue-156-take-2-nan-comparison
- - - - -
30 changed files:
- .gitlab-ci.yml
- benchmarks/cl-bench/files/math.lisp
- bin/build.sh
- bin/clean-target.sh
- bin/make-extra-dist.sh
- + bin/run-ansi-tests.sh
- bin/run-tests.sh → bin/run-unit-tests.sh
- + src/bootfiles/21e/boot-2023-08.lisp
- src/code/alieneval.lisp
- src/code/bsd-os.lisp
- src/code/c-call.lisp
- src/code/exports.lisp
- src/code/extfmts.lisp
- src/code/fd-stream-comp.lisp
- src/code/filesys.lisp
- src/code/linux-os.lisp
- src/code/list.lisp
- src/code/misc.lisp
- src/code/os.lisp
- src/code/pathname.lisp
- src/code/stream.lisp
- src/code/type.lisp
- src/compiler/seqtran.lisp
- src/compiler/x86/arith.lisp
- src/compiler/x86/c-call.lisp
- src/compiler/x86/insts.lisp
- src/general-info/release-21f.md
- src/i18n/locale/cmucl-linux-os.pot
- src/i18n/locale/cmucl-os.pot
- src/i18n/locale/cmucl.pot
The diff was not included because it is too large.
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/2bb842c1a485015f364a3f…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/2bb842c1a485015f364a3f…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-187-imul-disassembly at cmucl / cmucl
Commits:
4e433b83 by Raymond Toy at 2023-07-05T06:40:08-07:00
Set LANG in build.sh
For some reason, on my Mac system, LANG isn't set and sometimes git
messages are in Korean. So for consistency, set LANG in build.sh to a
known value that should work everywhere.
- - - - -
da69492b by Raymond Toy at 2023-07-17T15:07:01+00:00
Fix #234: Make :ascii external format builtin.
- - - - -
635d07ca by Raymond Toy at 2023-07-17T15:07:04+00:00
Merge branch 'issue-234-make-ascii-format-builtin' into 'master'
Fix #234: Make :ascii external format builtin.
Closes #234
See merge request cmucl/cmucl!155
- - - - -
0a35575a by Raymond Toy at 2023-07-17T15:07:47+00:00
Fix #242: Mask out unwanted bits for integer results
- - - - -
5d4b0622 by Raymond Toy at 2023-07-17T15:07:49+00:00
Merge branch 'issue-242-c-call-char-result-wrong' into 'master'
Fix #242: Mask out unwanted bits for integer results
Closes #242
See merge request cmucl/cmucl!154
- - - - -
bdd7294f by Raymond Toy at 2023-07-21T19:15:10+00:00
Fix #171: Readably print pathnames with :unspecific
- - - - -
4bce99fc by Raymond Toy at 2023-07-21T19:15:11+00:00
Merge branch 'issue-171-readable-unspecific-pathnames' into 'master'
Fix #171: Readably print pathnames with :unspecific
Closes #171
See merge request cmucl/cmucl!134
- - - - -
d37a3150 by Raymond Toy at 2023-07-22T00:19:38+00:00
Fix #248: Disassemble MOVS inst nicely
- - - - -
95dfdcf3 by Raymond Toy at 2023-07-22T00:19:39+00:00
Merge branch 'issue-248-disassemble-movs-nicely' into 'master'
Fix #248: Disassemble MOVS inst nicely
Closes #248
See merge request cmucl/cmucl!156
- - - - -
8c6e050a by Raymond Toy at 2023-07-21T18:06:08-07:00
Remove extraneous debugging print
Introduced in commit [0a35575aa0] for debugging and we forgot to
remove it.
- - - - -
a85ad7cf by Raymond Toy at 2023-07-23T12:18:48-07:00
Update release notes with closed issues
Should have been updated when the issue was closed, but we forgot.
Update now.
- - - - -
d5c23293 by Raymond Toy at 2023-07-23T15:07:27-07:00
Update cmucl.pot
Forgot to update cmucl.pot in previous commits/merges that changed
docstrings for various things. Update it now.
- - - - -
f577eda6 by Raymond Toy at 2023-07-23T22:38:00+00:00
Fix #244: Add c-call:signed-char
- - - - -
0411c386 by Raymond Toy at 2023-07-23T22:38:01+00:00
Merge branch 'issue-244-c-call-signed-char' into 'master'
Fix #244: Add c-call:signed-char
Closes #244
See merge request cmucl/cmucl!157
- - - - -
3e8b0a12 by Raymond Toy at 2023-07-26T13:43:15+00:00
Fix #245: Replace egrep with grep -E
- - - - -
24152f4d by Raymond Toy at 2023-07-26T13:43:15+00:00
Merge branch 'issue-245-replace-egrep-with-grep' into 'master'
Fix #245: Replace egrep with grep -E
Closes #245
See merge request cmucl/cmucl!158
- - - - -
5b27393f by Carl Shapiro at 2023-07-30T21:15:48-07:00
Guard against a division by zero in test run reports
- - - - -
a7300f03 by Carl Shapiro at 2023-07-31T05:28:58+00:00
Merge branch 'zero-tests' into 'master'
Guard against a division by zero when reporting test results
See merge request cmucl/cmucl!161
- - - - -
33f11724 by Raymond Toy at 2023-08-12T07:34:55-07:00
Replace latin-1 character Latin_Small_Letter_I_With_Diaeresis
In files/math.lisp, the word "naive" is spelled using the character
\Latin_Small_Letter_I_With_Diaeresis. However, when compiling locally
with a UTF-8 encoding (which is the default), this is invalid. The
letter needs to be encoded as 2 octets. I'm too lazy to figure out
how to get emacs to insert the correct encoded character so I'm
replacing it with a simple "i". This makes the file pure ASCII, so it
should work fine with a UTF-8 encoding.
- - - - -
a8ced15b by Carl Shapiro at 2023-08-14T04:45:23+00:00
Address #196: Fix issues with mapping and nconc accumulation
- - - - -
310e41eb by Carl Shapiro at 2023-08-14T04:45:41+00:00
Merge branch 'mapcan' into 'master'
Address #196: Fix issues with mapping and nconc accumulation
See merge request cmucl/cmucl!162
- - - - -
19a305de by Raymond Toy at 2023-08-16T14:28:11+00:00
Address #240: Speed up set-difference
- - - - -
9d593e3a by Raymond Toy at 2023-08-16T14:28:55+00:00
Merge branch 'issue-240-set-diff-with-hash-table' into 'master'
Address #240: Speed up set-difference
Closes #240
See merge request cmucl/cmucl!153
- - - - -
55c01f44 by Raymond Toy at 2023-08-17T13:33:59+00:00
Address #240: Speed up intersection by using a hashtable
- - - - -
14d847f0 by Raymond Toy at 2023-08-17T13:34:15+00:00
Merge branch 'issue-240-intersection-with-hash-table' into 'master'
Address #240: Speed up intersection by using a hashtable
Closes #240
See merge request cmucl/cmucl!160
- - - - -
c9ce7574 by Raymond Toy at 2023-08-17T13:36:18+00:00
Address #240: Speed up union by using a hashtable
- - - - -
5c7536f0 by Raymond Toy at 2023-08-17T13:36:44+00:00
Merge branch 'issue-240-union-with-hash-table' into 'master'
Address #240: Speed up union by using a hashtable
Closes #240
See merge request cmucl/cmucl!159
- - - - -
181508a9 by Raymond Toy at 2023-08-17T06:47:03-07:00
Remove old version of union
Oops. Forgot to remove this in !159, so we do it now.
- - - - -
a70248dd by Raymond Toy at 2023-08-19T13:38:11+00:00
Fix #249: Replace lea instruction for arithmetic
- - - - -
5b3e11f9 by Raymond Toy at 2023-08-19T13:38:34+00:00
Merge branch 'issue-249-replace-lea-in-arith' into 'master'
Fix #249: Replace lea instruction for arithmetic
Closes #249
See merge request cmucl/cmucl!163
- - - - -
f9ccc188 by Raymond Toy at 2023-08-21T18:03:25+00:00
Fix #252: Add script to run ansi-tests
- - - - -
eab9b876 by Raymond Toy at 2023-08-21T18:04:16+00:00
Merge branch 'issue-252-script-to-run-ansi-tests' into 'master'
Fix #252: Add script to run ansi-tests
Closes #252
See merge request cmucl/cmucl!165
- - - - -
0b497d8c by Raymond Toy at 2023-08-21T20:15:07+00:00
Address #240: Speed up subsetp with a hashtable
- - - - -
bfae1626 by Raymond Toy at 2023-08-21T20:15:21+00:00
Merge branch 'issue-240-subsetp-with-hash-table' into 'master'
Address #240: Speed up subsetp with a hashtable
Closes #240
See merge request cmucl/cmucl!164
- - - - -
afaeb420 by Raymond Toy at 2023-08-22T14:00:25+00:00
Fix #253: Block-compile list-to-hashtable and callers
- - - - -
a5b2c0f8 by Raymond Toy at 2023-08-22T14:02:24+00:00
Merge branch 'issue-253-block-compile-list-to-hashtable' into 'master'
Fix #253: Block-compile list-to-hashtable and callers
Closes #253
See merge request cmucl/cmucl!166
- - - - -
427aaa31 by Raymond Toy at 2023-08-22T19:50:31-07:00
Fix warning that SIGNED-CHAR is also exported from C-CALL
When we added `c-call:signed-char`, we forgot to also add it to the
package exports list for the `c-call` package. Add it to get rid of
the compiler warning.
- - - - -
9581820a by Raymond Toy at 2023-08-25T13:32:42+00:00
Address #240: Clean up hashtable implementation of set functions
- - - - -
39817da2 by Raymond Toy at 2023-08-25T13:32:51+00:00
Merge branch 'issue-240-clean-up-hashtable-impl' into 'master'
Address #240: Clean up hashtable implementation of set functions
See merge request cmucl/cmucl!168
- - - - -
87e54e03 by Raymond Toy at 2023-08-25T14:15:52+00:00
Address #240: Use hashtable for nset-diff, nunion, nintersection
- - - - -
4542d55e by Raymond Toy at 2023-08-25T14:16:04+00:00
Merge branch 'issue-240-add-hashtable-for-destructive-set-ops' into 'master'
Address #240: Use hashtable for nset-diff, nunion, nintersection
See merge request cmucl/cmucl!167
- - - - -
ffe3625a by Raymond Toy at 2023-08-29T13:01:16+00:00
Address #240: Rename processing macros for set operations
- - - - -
747a82ba by Raymond Toy at 2023-08-29T13:04:36+00:00
Merge branch 'issue-240-clean-up-hashtable-for-sets-impl' into 'master'
Address #240: Rename processing macros for set operations
See merge request cmucl/cmucl!171
- - - - -
d08a26c4 by Raymond Toy at 2023-08-29T14:53:04-07:00
Remove extra closing paren after %print-pathname
Gets rid of a simple compiler warning.
- - - - -
917c4240 by Raymond Toy at 2023-08-30T17:38:23+00:00
Fix #258: Remove get-page-size from linux-os.lisp
- - - - -
77dee627 by Raymond Toy at 2023-08-30T17:38:40+00:00
Merge branch 'issue-258-remove-get-page-size-from-linux-os' into 'master'
Fix #258: Remove get-page-size from linux-os.lisp
Closes #258
See merge request cmucl/cmucl!172
- - - - -
db531fef by Raymond Toy at 2023-08-30T17:59:50+00:00
Address #240: Add hashtable for set-exclusive-or
- - - - -
766c6aa5 by Raymond Toy at 2023-08-30T18:00:08+00:00
Merge branch 'issue-240-add-hashtable-set-exclusive-or' into 'master'
Address #240: Add hashtable for set-exclusive-or
See merge request cmucl/cmucl!169
- - - - -
961c96ad by Raymond Toy at 2023-08-30T11:12:42-07:00
Update release notes with fixed issues
- - - - -
3c318784 by Raymond Toy at 2023-09-09T02:27:58+00:00
Fix #261: Remove old get-system-info in bsd-os.lisp
- - - - -
a96a03e6 by Raymond Toy at 2023-09-09T02:28:11+00:00
Merge branch 'issue-261-remove-bsd-get-system-info' into 'master'
Fix #261: Remove old get-system-info in bsd-os.lisp
Closes #261
See merge request cmucl/cmucl!174
- - - - -
c7d29a31 by Raymond Toy at 2023-10-14T06:57:56-07:00
Use snapshot 2023-08 for running CI.
- - - - -
24fd8012 by Raymond Toy at 2023-11-14T23:44:10+00:00
Fix #265: Broken CI on Mac OS X
- - - - -
cdaa5def by Raymond Toy at 2023-11-14T23:44:44+00:00
Merge branch 'issue-265-ci-broken-on-mac-os' into 'master'
Fix #265: Broken CI on Mac OS X
Closes #265
See merge request cmucl/cmucl!176
- - - - -
fb29f7d9 by Raymond Toy at 2023-11-24T17:43:34+00:00
Fix #259: Move *software-version* from LISP to SYSTEM package
- - - - -
1af08245 by Raymond Toy at 2023-11-24T17:43:45+00:00
Merge branch 'issue-259-b-use-right-software-version' into 'master'
Fix #259: Move *software-version* from LISP to SYSTEM package
Closes #259
See merge request cmucl/cmucl!175
- - - - -
6b9f32f5 by Tarn Burton at 2023-11-29T22:39:39+00:00
Add support for Gray stream implementation of file-length
- - - - -
b218d29c by Raymond Toy at 2023-11-29T22:39:54+00:00
Merge branch 'gray-file-length' into 'master'
Add support for Gray stream implementation of file-length
See merge request cmucl/cmucl!179
- - - - -
a6854bb6 by Raymond Toy at 2023-11-30T13:47:10+00:00
Fix #269: Add function to get user's home directory
- - - - -
8e067da9 by Raymond Toy at 2023-11-30T13:47:20+00:00
Merge branch 'issue-269-unix-get-user-homedir' into 'master'
Fix #269: Add function to get user's home directory
Closes #269
See merge request cmucl/cmucl!178
- - - - -
bc8cb405 by Raymond Toy at 2023-12-07T23:09:31+00:00
Fix #266: Support ~user in namestrings
- - - - -
81f0d53c by Raymond Toy at 2023-12-07T23:09:36+00:00
Merge branch 'issue-266-b-tilde-pathname-support' into 'master'
Fix #266: Support ~user in namestrings
Closes #266
See merge request cmucl/cmucl!180
- - - - -
0364a45b by Raymond Toy at 2023-12-07T15:25:03-08:00
Update pot file
`stream-line-length` added a docstring that we forgot to add to our
pot file.
- - - - -
b0fc47bd by Raymond Toy at 2023-12-08T05:53:23-08:00
Declare NAME to be a string in get-user-homedir-namestring
For better error-checking, declare that the arg NAME for
get-user-homedir-namestring must be a string, obviously.
- - - - -
04d4d751 by Raymond Toy at 2023-12-08T13:39:35-08:00
Merge branch 'master' into issue-187-imul-disassembly
- - - - -
30 changed files:
- .gitlab-ci.yml
- benchmarks/cl-bench/files/math.lisp
- bin/build.sh
- bin/clean-target.sh
- bin/make-extra-dist.sh
- + bin/run-ansi-tests.sh
- bin/run-tests.sh → bin/run-unit-tests.sh
- + src/bootfiles/21e/boot-2023-08.lisp
- src/code/alieneval.lisp
- src/code/bsd-os.lisp
- src/code/c-call.lisp
- src/code/exports.lisp
- src/code/extfmts.lisp
- src/code/fd-stream-comp.lisp
- src/code/filesys.lisp
- src/code/linux-os.lisp
- src/code/list.lisp
- src/code/misc.lisp
- src/code/os.lisp
- src/code/pathname.lisp
- src/code/stream.lisp
- src/code/type.lisp
- src/compiler/seqtran.lisp
- src/compiler/x86/arith.lisp
- src/compiler/x86/c-call.lisp
- src/compiler/x86/insts.lisp
- src/general-info/release-21f.md
- src/i18n/locale/cmucl-linux-os.pot
- src/i18n/locale/cmucl-os.pot
- src/i18n/locale/cmucl.pot
The diff was not included because it is too large.
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/d829b6e6fab5ff66ca9e0f…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/d829b6e6fab5ff66ca9e0f…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
b0fc47bd by Raymond Toy at 2023-12-08T05:53:23-08:00
Declare NAME to be a string in get-user-homedir-namestring
For better error-checking, declare that the arg NAME for
get-user-homedir-namestring must be a string, obviously.
- - - - -
1 changed file:
- src/code/os.lisp
Changes:
=====================================
src/code/os.lisp
=====================================
@@ -68,6 +68,7 @@
status code. If the home directory does not exist NIL is returned.
The status is 0 if no errors occurred. Otherwise a non-zero value
is returned. Examining errno may give information about what failed."
+ (declare (string name))
(cond
((zerop (length name))
(multiple-value-bind (user-info status)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/b0fc47bd07ea5a0035f11cc…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/b0fc47bd07ea5a0035f11cc…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
0364a45b by Raymond Toy at 2023-12-07T15:25:03-08:00
Update pot file
`stream-line-length` added a docstring that we forgot to add to our
pot file.
- - - - -
1 changed file:
- src/i18n/locale/cmucl.pot
Changes:
=====================================
src/i18n/locale/cmucl.pot
=====================================
@@ -21329,6 +21329,10 @@ msgstr ""
msgid "Implements FILE-POSITION for the stream for setting the position."
msgstr ""
+#: src/pcl/gray-streams.lisp
+msgid "Implements FILE-LENGTH for the stream."
+msgstr ""
+
#: src/pcl/gray-streams.lisp
msgid ""
"Used by READ-BYTE; returns either an integer, or the symbol :EOF\n"
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/0364a45b1159b92abf26148…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/0364a45b1159b92abf26148…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
bc8cb405 by Raymond Toy at 2023-12-07T23:09:31+00:00
Fix #266: Support ~user in namestrings
- - - - -
81f0d53c by Raymond Toy at 2023-12-07T23:09:36+00:00
Merge branch 'issue-266-b-tilde-pathname-support' into 'master'
Fix #266: Support ~user in namestrings
Closes #266
See merge request cmucl/cmucl!180
- - - - -
7 changed files:
- src/code/exports.lisp
- src/code/filesys.lisp
- src/code/os.lisp
- src/general-info/release-21f.md
- src/i18n/locale/cmucl-os.pot
- tests/os.lisp
- tests/pathname.lisp
Changes:
=====================================
src/code/exports.lisp
=====================================
@@ -2074,7 +2074,7 @@
"FD-STREAM-P" "FIND-IF-IN-CLOSURE" "FOREIGN-SYMBOL-ADDRESS"
"FOREIGN-SYMBOL-CODE-ADDRESS" "FOREIGN-SYMBOL-DATA-ADDRESS"
"GET-PAGE-SIZE" "GET-SYSTEM-INFO"
- "GET-USER-HOMEDIR-PATHNAME"
+ "GET-USER-HOMEDIR-NAMESTRING"
"IGNORE-INTERRUPT"
"INT-SAP" "INVALIDATE-DESCRIPTOR" "IO-TIMEOUT"
"LISP-STREAM" "LONG-FLOAT-RADIX" "LONG-WORDS"
=====================================
src/code/filesys.lisp
=====================================
@@ -301,105 +301,136 @@
(return (values (remove-backslashes namestr start index)
(1+ index)))))))))
+(defun expand-tilde-user-name (str start end)
+ ;; Quick exit if STR doesn't start with ~ or we have an empty string.
+ (when (or (= start end)
+ (char/= (schar str start) #\~))
+ (return-from expand-tilde-user-name
+ (values str start end)))
+
+ (let ((end-user (position #\/ str :start start :end end)))
+ ;; Quick exit if we can't find a "/" to terminate the user name.
+ (unless end-user
+ (return-from expand-tilde-user-name
+ (values str start end)))
+ (let* ((user-name (subseq str (1+ start) end-user))
+ (homedir (get-user-homedir-namestring user-name)))
+ (unless homedir
+ (error "Unknown user ~S in namestring ~S" user-name (subseq str start end)))
+ ;; Replace the ~user part with the home directory, adjusting END
+ ;; because of the replacement.
+ (values (concatenate 'simple-base-string
+ (subseq str 0 start)
+ homedir
+ (subseq str end-user))
+ start
+ (+ end (- (length homedir)
+ (length user-name)
+ 1))))))
+
(defun parse-unix-namestring (namestr start end)
(declare (type simple-base-string namestr)
(type index start end))
- (multiple-value-bind
- (absolute pieces)
- (split-at-slashes namestr start end)
- (let ((search-list
- (if absolute
- nil
- (let ((first (car pieces)))
- (multiple-value-bind
- (search-list new-start)
- (maybe-extract-search-list namestr
- (car first) (cdr first))
- (when search-list
- ;; Lose if this search-list is already defined as
- ;; a logical host. Since the syntax for
- ;; search-lists and logical pathnames are the
- ;; same, we can't allow the creation of one when
- ;; the other is defined.
- (when (find-logical-host search-list nil)
- (error (intl:gettext "~A already names a logical host") search-list))
- (setf absolute t)
- (setf (car first) new-start))
- search-list)))))
- (multiple-value-bind (name type version)
- (let* ((tail (car (last pieces)))
- (tail-start (car tail))
- (tail-end (cdr tail)))
- (unless (= tail-start tail-end)
- (setf pieces (butlast pieces))
- (cond ((string= namestr ".." :start1 tail-start :end1 tail-end)
- ;; ".." is a directory. Add this piece to the
- ;; list of pieces, and make the name/type/version
- ;; nil.
- (setf pieces (append pieces (list (cons tail-start tail-end))))
- (values nil nil nil))
- ((string= namestr "." :start1 tail-start :end1 tail-end)
- ;; "." is a directory as well.
- (setf pieces (append pieces (list (cons tail-start tail-end))))
- (values nil nil nil))
- ((not (find-if-not #'(lambda (c)
- (char= c #\.))
- namestr :start tail-start :end tail-end))
- ;; Got a bunch of dots. Make it a file of the
- ;; same name, and type the empty string.
- (values (subseq namestr tail-start (1- tail-end)) "" nil))
- (t
- (extract-name-type-and-version namestr tail-start tail-end)))))
- ;; PVE: Make sure there are no illegal characters in the name
- ;; such as #\Null and #\/.
- (when (and (stringp name)
- (find-if #'(lambda (x)
- (or (char= x #\Null) (char= x #\/)))
- name))
- (error 'parse-error))
- ;; Now we have everything we want. So return it.
- (values nil ; no host for unix namestrings.
- nil ; no devices for unix namestrings.
- (collect ((dirs))
- (when search-list
- (dirs (intern-search-list search-list)))
- (dolist (piece pieces)
- (let ((piece-start (car piece))
- (piece-end (cdr piece)))
- (unless (= piece-start piece-end)
- (cond ((string= namestr ".." :start1 piece-start
- :end1 piece-end)
- (dirs :up))
- ((string= namestr "**" :start1 piece-start
- :end1 piece-end)
- (dirs :wild-inferiors))
- (t
- (dirs (maybe-make-pattern namestr
- piece-start
- piece-end)))))))
- (cond (absolute
- (cons :absolute (dirs)))
- ((dirs)
- ;; "." in a :relative directory is the same
- ;; as if it weren't there, so remove them.
- (cons :relative (delete "." (dirs) :test #'equal)))
- (t
- ;; If there is no directory and the name is
- ;; "." and the type is NIL, we really got
- ;; directory ".", so make it so.
- (if (and (equal name ".")
- (null type))
- (list :relative)
- nil))))
- ;; A file with name "." and type NIL can't be the name
- ;; of file on Unix because it's a directory. This was
- ;; handled above, so we can just set the name to nil.
- (if (and (equal name ".")
- (null type))
- nil
- name)
- type
- version)))))
+ ;; Look for "~user/" (or "~/"). If found replace it with the user's
+ ;; home directory
+ (multiple-value-bind (namestr start end)
+ (expand-tilde-user-name namestr start end)
+ (multiple-value-bind
+ (absolute pieces)
+ (split-at-slashes namestr start end)
+ (let ((search-list
+ (if absolute
+ nil
+ (let ((first (car pieces)))
+ (multiple-value-bind
+ (search-list new-start)
+ (maybe-extract-search-list namestr
+ (car first) (cdr first))
+ (when search-list
+ ;; Lose if this search-list is already defined as
+ ;; a logical host. Since the syntax for
+ ;; search-lists and logical pathnames are the
+ ;; same, we can't allow the creation of one when
+ ;; the other is defined.
+ (when (find-logical-host search-list nil)
+ (error (intl:gettext "~A already names a logical host") search-list))
+ (setf absolute t)
+ (setf (car first) new-start))
+ search-list)))))
+ (multiple-value-bind (name type version)
+ (let* ((tail (car (last pieces)))
+ (tail-start (car tail))
+ (tail-end (cdr tail)))
+ (unless (= tail-start tail-end)
+ (setf pieces (butlast pieces))
+ (cond ((string= namestr ".." :start1 tail-start :end1 tail-end)
+ ;; ".." is a directory. Add this piece to the
+ ;; list of pieces, and make the name/type/version
+ ;; nil.
+ (setf pieces (append pieces (list (cons tail-start tail-end))))
+ (values nil nil nil))
+ ((string= namestr "." :start1 tail-start :end1 tail-end)
+ ;; "." is a directory as well.
+ (setf pieces (append pieces (list (cons tail-start tail-end))))
+ (values nil nil nil))
+ ((not (find-if-not #'(lambda (c)
+ (char= c #\.))
+ namestr :start tail-start :end tail-end))
+ ;; Got a bunch of dots. Make it a file of the
+ ;; same name, and type the empty string.
+ (values (subseq namestr tail-start (1- tail-end)) "" nil))
+ (t
+ (extract-name-type-and-version namestr tail-start tail-end)))))
+ ;; PVE: Make sure there are no illegal characters in the name
+ ;; such as #\Null and #\/.
+ (when (and (stringp name)
+ (find-if #'(lambda (x)
+ (or (char= x #\Null) (char= x #\/)))
+ name))
+ (error 'parse-error))
+ ;; Now we have everything we want. So return it.
+ (values nil ; no host for unix namestrings.
+ nil ; no devices for unix namestrings.
+ (collect ((dirs))
+ (when search-list
+ (dirs (intern-search-list search-list)))
+ (dolist (piece pieces)
+ (let ((piece-start (car piece))
+ (piece-end (cdr piece)))
+ (unless (= piece-start piece-end)
+ (cond ((string= namestr ".." :start1 piece-start
+ :end1 piece-end)
+ (dirs :up))
+ ((string= namestr "**" :start1 piece-start
+ :end1 piece-end)
+ (dirs :wild-inferiors))
+ (t
+ (dirs (maybe-make-pattern namestr
+ piece-start
+ piece-end)))))))
+ (cond (absolute
+ (cons :absolute (dirs)))
+ ((dirs)
+ ;; "." in a :relative directory is the same
+ ;; as if it weren't there, so remove them.
+ (cons :relative (delete "." (dirs) :test #'equal)))
+ (t
+ ;; If there is no directory and the name is
+ ;; "." and the type is NIL, we really got
+ ;; directory ".", so make it so.
+ (if (and (equal name ".")
+ (null type))
+ (list :relative)
+ nil))))
+ ;; A file with name "." and type NIL can't be the name
+ ;; of file on Unix because it's a directory. This was
+ ;; handled above, so we can just set the name to nil.
+ (if (and (equal name ".")
+ (null type))
+ nil
+ name)
+ type
+ version))))))
(defun unparse-unix-host (pathname)
(declare (type pathname pathname)
=====================================
src/code/os.lisp
=====================================
@@ -58,32 +58,39 @@
(unix:get-unix-error-msg utime)))
(values utime stime major-fault))))
-;;; GET-USER-HOMEDIR-PATHNAME -- Public
+;;; GET-USER-HOMEDIR-NAMESTRING -- Public
;;;
-(defun get-user-homedir-pathname (name)
- _N"Get the user home directory for user named NAME. Two values are
- returned: the pathname of the home directory and a status code. If
- the home directory does not exist NIL is returned. The status is 0
- if no errors occurred. Otherwise a non-zero value is returned.
- Examining errno may give information about what failed."
- (alien:with-alien ((status c-call:int))
- (let (result)
- (unwind-protect
- (progn
- (setf result
- (alien:alien-funcall
- (alien:extern-alien "os_get_user_homedir"
- (function (alien:* c-call:c-string)
- c-call:c-string
- (* c-call:int)))
- name
- (alien:addr status)))
- (if (and (zerop status)
- (not (alien:null-alien result)))
- (values (pathname
- (concatenate 'string
- (alien:cast result c-call:c-string)
- "/"))
- status)
- (values nil status)))
- (alien:free-alien result)))))
+(defun get-user-homedir-namestring (name)
+ _N"Get the user home directory for user named NAME. If NAME is the empty
+ string, the home directory of the current user is returned.
+
+ Two values are returned: the pathname of the home directory and a
+ status code. If the home directory does not exist NIL is returned.
+ The status is 0 if no errors occurred. Otherwise a non-zero value
+ is returned. Examining errno may give information about what failed."
+ (cond
+ ((zerop (length name))
+ (multiple-value-bind (user-info status)
+ (unix:unix-getpwuid (unix:unix-getuid))
+ (values (when user-info
+ (unix:user-info-dir user-info))
+ status)))
+ (t
+ (alien:with-alien ((status c-call:int))
+ (let (result)
+ (unwind-protect
+ (progn
+ (setf result
+ (alien:alien-funcall
+ (alien:extern-alien "os_get_user_homedir"
+ (function (alien:* c-call:c-string)
+ c-call:c-string
+ (* c-call:int)))
+ name
+ (alien:addr status)))
+ (if (and (zerop status)
+ (not (alien:null-alien result)))
+ (values (alien:cast result c-call:c-string)
+ status)
+ (values nil status)))
+ (alien:free-alien result)))))))
=====================================
src/general-info/release-21f.md
=====================================
@@ -39,6 +39,7 @@ public domain.
* ~~#253~~ Block-compile list-to-hashtable and callers
* ~~#258~~ Remove `get-page-size` from linux-os.lisp
* ~~#269~~ Add function to get user's home directory
+ * ~~#266~~ Support "~user" in namestrings
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
=====================================
src/i18n/locale/cmucl-os.pot
=====================================
@@ -35,10 +35,12 @@ msgstr ""
#: src/code/os.lisp
msgid ""
-"Get the user home directory for user named NAME. Two values are\n"
-" returned: the pathname of the home directory and a status code. If\n"
-" the home directory does not exist NIL is returned. The status is 0\n"
-" if no errors occurred. Otherwise a non-zero value is returned.\n"
-" Examining errno may give information about what failed."
+"Get the user home directory for user named NAME. If NAME is the empty\n"
+" string, the home directory of the current user is returned.\n"
+"\n"
+" Two values are returned: the pathname of the home directory and a\n"
+" status code. If the home directory does not exist NIL is returned.\n"
+" The status is 0 if no errors occurred. Otherwise a non-zero value\n"
+" is returned. Examining errno may give information about what failed."
msgstr ""
=====================================
tests/os.lisp
=====================================
@@ -7,7 +7,7 @@
(define-test user-homedir.1
"Test user-homedir"
(:tag :issues)
- ;; Simple test to see if get-user-homedir-pathname returns the
+ ;; Simple test to see if get-user-homedir-namestring returns the
;; expected value. Use getuid and getpwuid to figure out what the
;; name and home directory should be.
(let* ((uid (unix:unix-getuid))
@@ -15,15 +15,13 @@
(assert-true uid)
(assert-true user-info)
(let* ((info-dir (unix:user-info-dir user-info))
- (info-name (unix:user-info-name user-info))
- (expected-home-pathname (pathname
- (concatenate 'string info-dir "/"))))
- (multiple-value-bind (home-pathname status)
- (system:get-user-homedir-pathname info-name)
+ (info-name (unix:user-info-name user-info)))
+ (multiple-value-bind (home-namestring status)
+ (system:get-user-homedir-namestring info-name)
(assert-true info-dir)
(assert-true info-name)
- (assert-equal home-pathname expected-home-pathname)
+ (assert-equal home-namestring info-dir)
(assert-eql status 0)))))
(define-test user-homedir.2
@@ -33,6 +31,6 @@
;; value for a user that does not exist. Well, we assume such a
;; user doesn't exist.
(multiple-value-bind (home-pathname status)
- (system:get-user-homedir-pathname "zotuserunknown")
+ (system:get-user-homedir-namestring "zotuserunknown")
(assert-eql home-pathname nil)
(assert-eql status 0)))
=====================================
tests/pathname.lisp
=====================================
@@ -111,3 +111,34 @@
test
(assert-equal printed-value (output pathname))
(assert-equal namestring (namestring pathname))))))
+
+(define-test issue.266.pathname-tilde.unknown-user
+ (:tag :issues)
+ ;; This assumes that there's no user named "zotunknown".
+ (assert-error 'simple-error (parse-namestring "~zotunknown/*.*")))
+
+(define-test issue.266.pathname-tilde.1
+ (:tag :issues)
+ ;; Simple test for ~ in pathnames. Get a directory list using
+ ;; #P"~/*.*". This should produce exactly the same list as the
+ ;; #search-list P"home:*.*".
+ (let ((dir-home (directory #p"home:*.*" :truenamep nil :follow-links nil))
+ (dir-tilde (directory #p"~/*.*" :truenamep nil :follow-links nil)))
+ (assert-equal dir-tilde dir-home)))
+
+(define-test issue.266.pathname-tilde.2
+ (:tag :issues)
+ ;; Simple test for ~ in pathnames. Get a directory list using
+ ;; #P"~user/*.*". This should produce exactly the same list as the
+ ;; #search-list P"home:*.*". We determine the user name via getuid
+ ;; #and getpwuid.
+ (let ((user-name (unix:user-info-name (unix:unix-getpwuid (unix:unix-getuid)))))
+ (assert-true user-name)
+ (let* ((dir-home (directory #p"home:*.*" :truenamep nil :follow-links nil))
+
+ (dir-tilde (directory (concatenate 'string
+ "~"
+ user-name
+ "/*.*")
+ :truenamep nil :follow-links nil)))
+ (assert-equal dir-tilde dir-home))))
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/8e067da95a2c8e3dad645b…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/8e067da95a2c8e3dad645b…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-266-b-tilde-pathname-support at cmucl / cmucl
Commits:
e0ae2ea6 by Raymond Toy at 2023-12-07T14:49:30-08:00
Update release notes
- - - - -
7ab1964d by Raymond Toy at 2023-12-07T14:49:48-08:00
Add tests for ~user in pathnames
- - - - -
4f64fc56 by Raymond Toy at 2023-12-07T14:50:04-08:00
Update tests for changes in get-user-homedir-namestring
The function name has changed and we return a namestring instead of a
pathname.
- - - - -
3 changed files:
- src/general-info/release-21f.md
- tests/os.lisp
- tests/pathname.lisp
Changes:
=====================================
src/general-info/release-21f.md
=====================================
@@ -39,6 +39,7 @@ public domain.
* ~~#253~~ Block-compile list-to-hashtable and callers
* ~~#258~~ Remove `get-page-size` from linux-os.lisp
* ~~#269~~ Add function to get user's home directory
+ * ~~#266~~ Support "~user" in namestrings
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
=====================================
tests/os.lisp
=====================================
@@ -7,7 +7,7 @@
(define-test user-homedir.1
"Test user-homedir"
(:tag :issues)
- ;; Simple test to see if get-user-homedir-pathname returns the
+ ;; Simple test to see if get-user-homedir-namestring returns the
;; expected value. Use getuid and getpwuid to figure out what the
;; name and home directory should be.
(let* ((uid (unix:unix-getuid))
@@ -15,15 +15,13 @@
(assert-true uid)
(assert-true user-info)
(let* ((info-dir (unix:user-info-dir user-info))
- (info-name (unix:user-info-name user-info))
- (expected-home-pathname (pathname
- (concatenate 'string info-dir "/"))))
- (multiple-value-bind (home-pathname status)
- (system:get-user-homedir-pathname info-name)
+ (info-name (unix:user-info-name user-info)))
+ (multiple-value-bind (home-namestring status)
+ (system:get-user-homedir-namestring info-name)
(assert-true info-dir)
(assert-true info-name)
- (assert-equal home-pathname expected-home-pathname)
+ (assert-equal home-namestring info-dir)
(assert-eql status 0)))))
(define-test user-homedir.2
@@ -33,6 +31,6 @@
;; value for a user that does not exist. Well, we assume such a
;; user doesn't exist.
(multiple-value-bind (home-pathname status)
- (system:get-user-homedir-pathname "zotuserunknown")
+ (system:get-user-homedir-namestring "zotuserunknown")
(assert-eql home-pathname nil)
(assert-eql status 0)))
=====================================
tests/pathname.lisp
=====================================
@@ -111,3 +111,34 @@
test
(assert-equal printed-value (output pathname))
(assert-equal namestring (namestring pathname))))))
+
+(define-test issue.266.pathname-tilde.unknown-user
+ (:tag :issues)
+ ;; This assumes that there's no user named "zotunknown".
+ (assert-error 'simple-error (parse-namestring "~zotunknown/*.*")))
+
+(define-test issue.266.pathname-tilde.1
+ (:tag :issues)
+ ;; Simple test for ~ in pathnames. Get a directory list using
+ ;; #P"~/*.*". This should produce exactly the same list as the
+ ;; #search-list P"home:*.*".
+ (let ((dir-home (directory #p"home:*.*" :truenamep nil :follow-links nil))
+ (dir-tilde (directory #p"~/*.*" :truenamep nil :follow-links nil)))
+ (assert-equal dir-tilde dir-home)))
+
+(define-test issue.266.pathname-tilde.2
+ (:tag :issues)
+ ;; Simple test for ~ in pathnames. Get a directory list using
+ ;; #P"~user/*.*". This should produce exactly the same list as the
+ ;; #search-list P"home:*.*". We determine the user name via getuid
+ ;; #and getpwuid.
+ (let ((user-name (unix:user-info-name (unix:unix-getpwuid (unix:unix-getuid)))))
+ (assert-true user-name)
+ (let* ((dir-home (directory #p"home:*.*" :truenamep nil :follow-links nil))
+
+ (dir-tilde (directory (concatenate 'string
+ "~"
+ user-name
+ "/*.*")
+ :truenamep nil :follow-links nil)))
+ (assert-equal dir-tilde dir-home))))
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/1cd91a3d39ab5e69f405e2…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/1cd91a3d39ab5e69f405e2…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-266-b-tilde-pathname-support at cmucl / cmucl
Commits:
9817f1e9 by Raymond Toy at 2023-12-07T14:11:13-08:00
Address review comments.
Rename `replace-tilde-user` to `expand-tilde-user-name`
Update `system:get-user-homedir-namestring` to handle a user name of
"" which means the current user.
- - - - -
1cd91a3d by Raymond Toy at 2023-12-07T14:12:21-08:00
Update pot file for changed comment
- - - - -
3 changed files:
- src/code/filesys.lisp
- src/code/os.lisp
- src/i18n/locale/cmucl-os.pot
Changes:
=====================================
src/code/filesys.lisp
=====================================
@@ -301,26 +301,20 @@
(return (values (remove-backslashes namestr start index)
(1+ index)))))))))
-(defun user-homedir-namestring (name)
- (cond ((zerop (length name))
- (unix:user-info-dir (unix:unix-getpwuid (unix:unix-getuid))))
- (t
- (system:get-user-homedir-namestring name))))
-
-(defun replace-tilde-user (str start end)
+(defun expand-tilde-user-name (str start end)
;; Quick exit if STR doesn't start with ~ or we have an empty string.
(when (or (= start end)
(char/= (schar str start) #\~))
- (return-from replace-tilde-user
+ (return-from expand-tilde-user-name
(values str start end)))
(let ((end-user (position #\/ str :start start :end end)))
;; Quick exit if we can't find a "/" to terminate the user name.
(unless end-user
- (return-from replace-tilde-user
+ (return-from expand-tilde-user-name
(values str start end)))
(let* ((user-name (subseq str (1+ start) end-user))
- (homedir (user-homedir-namestring user-name)))
+ (homedir (get-user-homedir-namestring user-name)))
(unless homedir
(error "Unknown user ~S in namestring ~S" user-name (subseq str start end)))
;; Replace the ~user part with the home directory, adjusting END
@@ -340,7 +334,7 @@
;; Look for "~user/" (or "~/"). If found replace it with the user's
;; home directory
(multiple-value-bind (namestr start end)
- (replace-tilde-user namestr start end)
+ (expand-tilde-user-name namestr start end)
(multiple-value-bind
(absolute pieces)
(split-at-slashes namestr start end)
=====================================
src/code/os.lisp
=====================================
@@ -61,26 +61,36 @@
;;; GET-USER-HOMEDIR-NAMESTRING -- Public
;;;
(defun get-user-homedir-namestring (name)
- _N"Get the user home directory for user named NAME. Two values are
- returned: the pathname of the home directory and a status code. If
- the home directory does not exist NIL is returned. The status is 0
- if no errors occurred. Otherwise a non-zero value is returned.
- Examining errno may give information about what failed."
- (alien:with-alien ((status c-call:int))
- (let (result)
- (unwind-protect
- (progn
- (setf result
- (alien:alien-funcall
- (alien:extern-alien "os_get_user_homedir"
- (function (alien:* c-call:c-string)
- c-call:c-string
- (* c-call:int)))
- name
- (alien:addr status)))
- (if (and (zerop status)
- (not (alien:null-alien result)))
- (values (alien:cast result c-call:c-string)
- status)
- (values nil status)))
- (alien:free-alien result)))))
+ _N"Get the user home directory for user named NAME. If NAME is the empty
+ string, the home directory of the current user is returned.
+
+ Two values are returned: the pathname of the home directory and a
+ status code. If the home directory does not exist NIL is returned.
+ The status is 0 if no errors occurred. Otherwise a non-zero value
+ is returned. Examining errno may give information about what failed."
+ (cond
+ ((zerop (length name))
+ (multiple-value-bind (user-info status)
+ (unix:unix-getpwuid (unix:unix-getuid))
+ (values (when user-info
+ (unix:user-info-dir user-info))
+ status)))
+ (t
+ (alien:with-alien ((status c-call:int))
+ (let (result)
+ (unwind-protect
+ (progn
+ (setf result
+ (alien:alien-funcall
+ (alien:extern-alien "os_get_user_homedir"
+ (function (alien:* c-call:c-string)
+ c-call:c-string
+ (* c-call:int)))
+ name
+ (alien:addr status)))
+ (if (and (zerop status)
+ (not (alien:null-alien result)))
+ (values (alien:cast result c-call:c-string)
+ status)
+ (values nil status)))
+ (alien:free-alien result)))))))
=====================================
src/i18n/locale/cmucl-os.pot
=====================================
@@ -35,10 +35,12 @@ msgstr ""
#: src/code/os.lisp
msgid ""
-"Get the user home directory for user named NAME. Two values are\n"
-" returned: the pathname of the home directory and a status code. If\n"
-" the home directory does not exist NIL is returned. The status is 0\n"
-" if no errors occurred. Otherwise a non-zero value is returned.\n"
-" Examining errno may give information about what failed."
+"Get the user home directory for user named NAME. If NAME is the empty\n"
+" string, the home directory of the current user is returned.\n"
+"\n"
+" Two values are returned: the pathname of the home directory and a\n"
+" status code. If the home directory does not exist NIL is returned.\n"
+" The status is 0 if no errors occurred. Otherwise a non-zero value\n"
+" is returned. Examining errno may give information about what failed."
msgstr ""
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/59d589645f9fbdc81dd462…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/59d589645f9fbdc81dd462…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-266-b-tilde-pathname-support at cmucl / cmucl
Commits:
59d58964 by Raymond Toy at 2023-12-06T13:59:14-08:00
Simplify code.
`user-homedir-namestring` did too much unneeded stuff. And don't
signal an error here.
Signal an error in `replace-tilde-user` if the user can't be found.
- - - - -
1 changed file:
- src/code/filesys.lisp
Changes:
=====================================
src/code/filesys.lisp
=====================================
@@ -303,14 +303,9 @@
(defun user-homedir-namestring (name)
(cond ((zerop (length name))
- (let ((user (unix:unix-getpwuid (unix:unix-getuid))))
- (concatenate 'simple-base-string
- (unix:user-info-dir user))))
+ (unix:user-info-dir (unix:unix-getpwuid (unix:unix-getuid))))
(t
- (let ((path (system:get-user-homedir-namestring name)))
- (unless path
- (error "Unknown user: ~S" name))
- path))))
+ (system:get-user-homedir-namestring name))))
(defun replace-tilde-user (str start end)
;; Quick exit if STR doesn't start with ~ or we have an empty string.
@@ -326,6 +321,8 @@
(values str start end)))
(let* ((user-name (subseq str (1+ start) end-user))
(homedir (user-homedir-namestring user-name)))
+ (unless homedir
+ (error "Unknown user ~S in namestring ~S" user-name (subseq str start end)))
;; Replace the ~user part with the home directory, adjusting END
;; because of the replacement.
(values (concatenate 'simple-base-string
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/59d589645f9fbdc81dd4623…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/59d589645f9fbdc81dd4623…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-266-b-tilde-pathname-support at cmucl / cmucl
Commits:
723474d6 by Raymond Toy at 2023-12-06T13:53:17-08:00
Remove debugging prints
- - - - -
1 changed file:
- src/code/filesys.lisp
Changes:
=====================================
src/code/filesys.lisp
=====================================
@@ -313,9 +313,6 @@
path))))
(defun replace-tilde-user (str start end)
- #+nil
- (return-from replace-tilde-user
- (values str start end))
;; Quick exit if STR doesn't start with ~ or we have an empty string.
(when (or (= start end)
(char/= (schar str start) #\~))
@@ -323,18 +320,14 @@
(values str start end)))
(let ((end-user (position #\/ str :start start :end end)))
- #+nil
- (format t "user ~D:~D: ~A~%" (1+ start) end-user (subseq str (1+ start) end-user))
;; Quick exit if we can't find a "/" to terminate the user name.
(unless end-user
(return-from replace-tilde-user
(values str start end)))
(let* ((user-name (subseq str (1+ start) end-user))
(homedir (user-homedir-namestring user-name)))
- #+nil
- (format t "user-name: ~S; homedir: ~S~%"
- user-name homedir)
- ;; Replace the ~user part with the home directory, adjusting END because of the replacement.
+ ;; Replace the ~user part with the home directory, adjusting END
+ ;; because of the replacement.
(values (concatenate 'simple-base-string
(subseq str 0 start)
homedir
@@ -351,8 +344,6 @@
;; home directory
(multiple-value-bind (namestr start end)
(replace-tilde-user namestr start end)
- #+nil
- (format t "~S: ~D ~D~%" namestr start end)
(multiple-value-bind
(absolute pieces)
(split-at-slashes namestr start end)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/723474d6587dbfe474e5cba…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/723474d6587dbfe474e5cba…
You're receiving this email because of your account on gitlab.common-lisp.net.