@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.
@@ -7728,7 +7728,7 @@ function satisfies(version, range2) {
7728
7728
  }
7729
7729
 
7730
7730
  // src/version.ts
7731
- var KERNEL_VERSION = true ? "1.144.0" : "0.0.0-dev";
7731
+ var KERNEL_VERSION = true ? "1.144.1" : "0.0.0-dev";
7732
7732
  var OS_RELEASE = "6.0.0-slicc";
7733
7733
  function procVersion() {
7734
7734
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
@@ -8742,11 +8742,26 @@ var UnlinkedKeeper = class {
8742
8742
  },
8743
8743
  async rename(from, to) {
8744
8744
  const target = fs.resolvePath("/", to);
8745
- if (target === fs.resolvePath("/", from)) return fs.rename(from, to);
8746
- await replace(target, async (gated, sealed) => {
8747
- const pinned = await keeper.pin(target, gated, sealed);
8748
- await keeper.settle(pinned, () => fs.rename(from, to));
8749
- });
8745
+ const source = fs.resolvePath("/", from);
8746
+ if (target === source) return fs.rename(from, to);
8747
+ keeper.touch(source);
8748
+ try {
8749
+ await replace(target, async (gated, sealed) => {
8750
+ const pinned = await keeper.pin(target, gated, sealed);
8751
+ await keeper.settle(pinned, () => fs.rename(from, to));
8752
+ });
8753
+ } finally {
8754
+ keeper.touch(source);
8755
+ }
8756
+ },
8757
+ async symlink(target, path, owner) {
8758
+ const at = fs.resolvePath("/", path);
8759
+ keeper.touch(at);
8760
+ try {
8761
+ await fs.symlink(target, path, owner);
8762
+ } finally {
8763
+ keeper.touch(at);
8764
+ }
8750
8765
  },
8751
8766
  readdir: async (path) => visible(await fs.readdir(path)),
8752
8767
  readdirStat: async (path) => (await fs.readdirStat(path)).filter(([name2]) => name2 !== UNLINKED_DIR).map(([name2, st]) => [name2, st && counted2(st)])
@@ -13586,6 +13601,9 @@ async function holdOp(entry, path, req) {
13586
13601
  await r?.settled(path);
13587
13602
  const gen = r?.generation() ?? 0;
13588
13603
  await opening(entry, path, mode);
13604
+ if (req.nofollow && (await entry.fs.lstat(path).catch(() => void 0))?.isSymbolicLink) {
13605
+ throw syncError("ELOOP", path);
13606
+ }
13589
13607
  const real = await entry.fs.realpath?.(path, true).catch(() => path);
13590
13608
  await entry.source?.open(path, real);
13591
13609
  await stillThere(entry, path, req);