@ai-ecoverse/slicc-kernel 1.144.0 → 1.144.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/node.js CHANGED
@@ -3305,7 +3305,7 @@ function satisfies(version, range2) {
3305
3305
  }
3306
3306
 
3307
3307
  // src/version.ts
3308
- var KERNEL_VERSION = true ? "1.144.0" : "0.0.0-dev";
3308
+ var KERNEL_VERSION = true ? "1.144.1" : "0.0.0-dev";
3309
3309
  var OS_RELEASE = "6.0.0-slicc";
3310
3310
  function procVersion() {
3311
3311
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
@@ -4332,11 +4332,26 @@ var UnlinkedKeeper = class {
4332
4332
  },
4333
4333
  async rename(from, to) {
4334
4334
  const target = fs.resolvePath("/", to);
4335
- if (target === fs.resolvePath("/", from)) return fs.rename(from, to);
4336
- await replace(target, async (gated, sealed) => {
4337
- const pinned = await keeper.pin(target, gated, sealed);
4338
- await keeper.settle(pinned, () => fs.rename(from, to));
4339
- });
4335
+ const source = fs.resolvePath("/", from);
4336
+ if (target === source) return fs.rename(from, to);
4337
+ keeper.touch(source);
4338
+ try {
4339
+ await replace(target, async (gated, sealed) => {
4340
+ const pinned = await keeper.pin(target, gated, sealed);
4341
+ await keeper.settle(pinned, () => fs.rename(from, to));
4342
+ });
4343
+ } finally {
4344
+ keeper.touch(source);
4345
+ }
4346
+ },
4347
+ async symlink(target, path, owner) {
4348
+ const at = fs.resolvePath("/", path);
4349
+ keeper.touch(at);
4350
+ try {
4351
+ await fs.symlink(target, path, owner);
4352
+ } finally {
4353
+ keeper.touch(at);
4354
+ }
4340
4355
  },
4341
4356
  readdir: async (path) => visible(await fs.readdir(path)),
4342
4357
  readdirStat: async (path) => (await fs.readdirStat(path)).filter(([name2]) => name2 !== UNLINKED_DIR).map(([name2, st]) => [name2, st && counted3(st)])
@@ -9744,6 +9759,9 @@ async function holdOp(entry, path, req) {
9744
9759
  await r?.settled(path);
9745
9760
  const gen = r?.generation() ?? 0;
9746
9761
  await opening(entry, path, mode);
9762
+ if (req.nofollow && (await entry.fs.lstat(path).catch(() => void 0))?.isSymbolicLink) {
9763
+ throw syncError("ELOOP", path);
9764
+ }
9747
9765
  const real = await entry.fs.realpath?.(path, true).catch(() => path);
9748
9766
  await entry.source?.open(path, real);
9749
9767
  await stillThere(entry, path, req);