Provided by: manpages-nl-dev_4.21.0-2_all bug

NAAM

       rename, renameat, renameat2 - verander de naam of plaats van een bestand

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

SAMENVATTING

       #include <stdio.h>

       int rename(const char *oudpad, const char *nieuwpad);

       #include <fcntl.h>           /* Definitie van AT_* constanten */
       #include <stdio.h>

       int renameat(int oud_bes_ind, const char *oudpad,
                    int nieuw_bes_ind, const char *nieuwpad);
       int renameat2(int oud_bes_ind, const char *oudpad,
                     int nieuw_bes_ind, const char *nieuwpad, unsigned int vlaggen);

   Feature Test Macro´s eisen in  glibc (zie feature_test_macros(7)):

       renameat():
           Vanaf glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Voor glibc 2.10:
               _ATFILE_SOURCE

       renameat2():
          _GNU_SOURCE

BESCHRIJVING

       rename()  hernoemt een bestand, het naar andere mappen verplaatsend als nodig. Elke andere
       harde  koppeling  naar  het  bestand  (gemaakt  met  link(2))  blijft  onaangetast.   Open
       bestandsindicatoren voor oudpad blijven ook onaangetast.

       Diverse  beperkingen  bepalen  of  de rename operatie wel of niet succesvol is: zie FOUTEN
       hieronder.

       Als nieuwpad al bestaat wordt het atomair vervangen zodat er geen enkel moment  is  waarop
       een  ander  proces  dat toegang tot nieuwpad probeert te krijgen het zal missen. Hoewel er
       mogelijk een venster kan zijn waarin beiden oudpad en nieuwpad naar het bestand wijzen dat
       hernoemd wordt.

       Als  oudpad en nieuwpad bestaande harde verwijzingen naar hetzelfde bestand zijn, dan doet
       rename() niks en geeft een succes status terug.

       Als nieuwpad bestaat maar de handeling faalt  om  een  of  andere  reden,  dan  garandeert
       rename(), nieuwpad op zijn plaats te laten.

       oudpad  kan  een  map specificeren. In dit geval moet of nieuwpad niet bestaan of een lege
       map specificeren.

       Als oudpad naar een symbolische link wijst, wordt de koppeling hernoemd; als nieuwpad naar
       een symbolische link wijst wordt de koppeling overschreven.

   renameat()
       De  renameat()  systeem aanroep werkt op exact dezelfde manier a;ls rename(), behalve voor
       de hier beschreven verschillen.

       Als de padnaam gegeven in oudpad relatief is, dan wordt deze geïnterpreteerd als  relatief
       ten  opzichte  van  de map aangewezen door de bestandsindicator oud_bes_ind (in plaats van
       relatief aan de werkmap van het aanroepende proces, zoals gedaan door  rename()  voor  een
       relatieve padnaam).

       Als oudpad relatief is en oud_bes_ind  de speciale waarde AT_FDCWD heeft, dan wordt oudpad
       geïnterpreteerd als relatief aan de werkmap van het aanroepende proces (zoals rename()).

       Als oudpad absoluut is, dan wordt oudpadbi genegeerd.

       De interpretatie van nieuwpad is zoals voor oudpad behalve dat een relatieve padnaam wordt
       geïnterpreteerd als relatief aan de map aangewezen door de bestandsindicator nieuwmapbi.

       Zie openat(2) voor een uitleg over de noodzaak van renameat().

   renameat2()
       renameat2()  heeft een additioneel vlaggen argument.  Een renameat2()  aanroep met een nul
       vlaggen argument is equivalent met renameat().

       Het vlaggen argument is een bit masker bestaande uit nul of meer van de volgende vlaggen:

       RENAME_EXCHANGE
              Verwissel oudpad en nieuwpad atomair. Beide padnamen moeten bestaan maar mogen  van
              verschillende  typen  zijn (b.v. een zou een niet-lege map kunnen zijn en de andere
              een symbolische verwijzing).

       RENAME_NOREPLACE
              Overschrijf nieuwpad niet bij het hernoemen. Geef een fout terug  als  nieuwpad  al
              bestaat.

              RENAME_NOREPLACE kan niet gebruikt worden samen met RENAME_EXCHANGE.

              RENAME_NOREPLACE  vereist  ondersteuning  door  het  onderliggende bestandssysteem.
              Ondersteuning door verschillende bestandssystemen wordt als volgt toegevoegd:

              •  ext4 (Linux 3.15);

              •  btrfs, tmpfs, en cifs (Linux 3.17);

              •  xfs (Linux 4.0);

              •  Ondersteuning voor veel andere bestandssystemen werd toegevoegd  in  Linux  4.9,
                 inclusief ext2, minix, reiserfs, jfs, vfat en bpf.

       RENAME_WHITEOUT (sinds Linux 3.18)
              Deze   operatie   is   alleen  logisch  voor  overlappende/eenheid  bestandssysteem
              implementaties.

              Opgeven van RENAME_WHITEOUT creëert een "whiteout" object aan  het  begin  van  het
              hernoemen  op  hetzelfde  tijdstip  als  het  uitvoeren  van het hernoemen. De hele
              operatie is atomair, zodat als het hernoemen succesvol is  de  "whiteout"  ook  zal
              zijn aangemaakt.

              Een  "whiteout"  is  een  object  met  een  speciale  betekenis  in eenheid/overlap
              bestandssysteem constructies. In  deze  constructies,  bestaan  meerdere  lagen  en
              alleen  de  bovenste zal ooit worden gewijzigd. Een "whiteout" op een bovenste laag
              zal een overeenkomend bestand effectief verstoppen in  een  lagere  laag,  er  voor
              zorgende dat het bestand verschijnt alsof het niet bestaat.

              Wanneer  een  bestaand  bestand  op  de  lagere  laag werd hernoemd, dan wordt deze
              allereerst omhoog gekopieerd (als hij  al  niet  bestond  op  de  hogere  laag)  en
              vervolgens gehernoemd op de hogere, lees-schrijf laag. Tegelijkertijd moet het bron
              bestand ge-"whiteout" zijn (zodat de versie van het bron bestand in de lagere  laag
              onzichtbaar is). De gehele operatie dient atomair uitgevoerd te worden.

              Indien geen onderdeel van een eenheid/overlap, dan verschijnt de "whiteout" als een
              teken apparaat met (0,0) als apparaat nummer. (Merk op dan  andere  eenheid/overlap
              implementaties andere methodes kunnen gebruiken om "whiteout" eenheden op te slaan;
              zo gebruikt de BSD eenheid koppeling het speciale inode  type  DT_WHT  die,  hoewel
              ondersteund  door  een  aantal bestandssystemen beschikbaar in Linux, zoals CODA en
              XFS, wordt genegeerd door de ondersteunende code in de kernel, vanaf Linux 4.19.)

              RENAME_WHITEOUT vereist dezelfde rechten als voor het  aanmaken  van  een  apparaat
              node (m.a.w, de CAP_MKNOD capaciteit).

              RENAME_NOREPLACE kan niet gebruikt worden samen met RENAME_EXCHANGE.

              RENAME_NOREPLACE  vereist  ondersteuning  door  het  onderliggende bestandssysteem.
              Onder de bestandssystemen die het ondersteunen zijn tmpfs (vanaf Linux 3.18),  ext4
              (vanaf  Linux  3.18),  XFS  (vanaf Linux 4.1), f2fs (vanaf Linux 4.2), btrfs (vanaf
              Linux 4.7), en ubifs (vanaf Linux 4.9).

EIND WAARDE

       Bij succes wordt nul  teruggegeven.  Bij  falen  wordt  -1  teruggegeven  en  wordt  errno
       overeenkomstig gezet.

FOUTEN

       EACCES Schrijf  toegang  is  niet  toegestaan  in de map die oudpad of nieuwpad bevat, of,
              zoeken is niet toegestaan voor een van de mappen in het pad voorvoegsel van  oudpad
              of  nieuwpad,  of  oudpad is een map en staat niet schrijftoestemming niet toe (die
              nodig is om de .. ingang te updaten). (Zie ook path_resolution(7).)

       EBUSY  Het hernoemen faalde omdat oudpad of nieuwpad een map is die in gebruik is door een
              of  ander  proces  (misschien  als huidige werkmap, of als systeembeheerder map, of
              omdat het voor  schrijven  open  was)  of  het  is  in  gebruik  door  het  systeem
              (bijvoorbeeld als aankoppel punt), en het systeem beschouwd dit als een fout. (Merk
              op dat er geen vereiste is om EBUSY terug te geven is in deze gevallen —er is niets
              mis  met het hoe-dan-ook doen van de hernoeming— maar het wordt toegestaan om EBUSY
              terug te geven als het systeem dergelijke situaties niet anders kan afhandelen.)

       EDQUOT De gebruiker quota van schijf blokken op het bestandssysteem zijn uitgeput.

       EFAULT oudpad of nieuwpad wijzen buiten door u toegankelijke adres ruimte.

       EINVAL De nieuwe padnaam bevat een voorvoegsel van de oude, of, algemener, een poging werd
              gedaan om een map een ondermap van zichzelf te maken.

       EISDIR nieuwpad is een bestaande map, maar oudpad is geen map.

       ELOOP  Teveel  symbolische  koppelingen werden tegengekomen bij het vaststellen van oudpad
              of nieuwpad.

       EMLINK oudpad heeft al het maximum aantal koppelingen naar zich toe, of het was een dir en
              de map die nieuwpad bevat heeft al het maximum aantal koppelingen.

       ENAMETOOLONG
              oudpad of nieuwpad was te lang.

       ENOENT De  verwijzing  aangeduid door oudpad bestaat niet of een map component in nieuwpad
              bestaat niet, of oudpad of nieuwpad zijn lege tekenreeksen.

       ENOMEM Onvoldoende kernelgeheugen voorhanden.

       ENOSPC Het apparaat waar het bestand op zit heeft geen ruimte voor een nieuwe map.

       ENOTDIR
              Een deel gebruikt als een map in oudpad of nieuwpad  is  in  feite  geen  map.  Of,
              oudpad is een map, en nieuwpad bestaat maar is geen map.

       ENOTEMPTY of EEXIST
              nieuwpad is een niet-lege map, het bevat andere ingangen dan "." en "..".

       EPERM of EACCES
              De  map  die  oudpad  bevat  heeft  het  plak-bit (S_ISVTX)  gezet enhet effectieve
              gebruiker ID is noch het gebruiker ID van het bestand dat  gewist moet worden  noch
              dat  van  de  map  die het bevat, en het proces is niet gerechtigd (Linux: heeft de
              CAP_FOWNER capaciteit); of nieuwpad is een bestaand bestand en de map die het bevat
              heeft het plak-bit gezet  en het effectieve gebruiker ID van het proces is noch het
              gebruiker ID van het bestand dat moet worden vervangen noch dat van de map die  het
              bevat,  en  het  proces  is niet gerechtigd (Linux: heeft de  CAP_FOWNER capaciteit
              niet); of het bestandssysteem dat oudpad bevat ondersteund het  hernoemen  van  het
              dit type niet.

       EROFS  Het bestand staat op een alleen-lezen bestandssysteem.

       EXDEV  oudpad  en  nieuwpad zitten niet op hetzelfde aangekoppelde bestandssysteem. (Linux
              staat toe  dat  bestandssystemen  worden  aangekoppeld  op  meerdere  punten,  maar
              rename()  werkt  niet  over  verschillende  aankoppel  punten,  zelfs als hetzelfde
              bestandssysteem is gekoppeld op beiden.)

       De volgende extra fouten kunnen optreden voor renameat() en renameat2():

       EBADF  oudemapbi (nieuwpad)  is relatief maar  oudemapbi  (nieuwmapbi)  is   geen  geldige
              bestandsindicator.

       ENOTDIR
              oudpad is relatief en oudmapbi is een bestandsindicator die naar een bestand anders
              dan een map wijst; of vergelijkbaar voor nieuwpad en nieuwmapbi

       De volgende extra fouten kunnen optreden voor renameat2():

       EEXIST vlaggen bevat RENAME_NOREPLACE en nieuwpad bestaat al.

       EINVAL Een ongeldig vlag werd in vlaggen opgegeven.

       EINVAL Zowel RENAME_NOREPLACE als RENAME_EXCHANGE werden opgegeven in vlaggen.

       EINVAL Zowel RENAME_NOREPLACE als RENAME_EXCHANGE werden opgegeven in vlaggen.

       EINVAL Het bestandssysteem ondersteund een van de vlaggen in vlaggen niet.

       ENOENT flags bevat RENAME_EXCHANGE en nieuwpad bestaat niet.

       EPERM  RENAME_WHITEOUT werd opgegeven in vlaggen,  maar  de  aanroeper  heeft  deCAP_MKNOD
              capaciteit niet.

VERSIES

       renameat()   werd  toegevoegd aan Linux 2.6.16; bibliotheek ondersteuning werd  toegevoegd
       aan glibc 2.4.

       renameat2()  werd toegevoegd aan Linux 3.15; bibliotheek  ondersteuning  werd   toegevoegd
       aan glibc 2.28.

VOLDOET AAN

       rename(): 4.3BSD, C99, POSIX.1-2001, POSIX.1-2008.

       renameat(): POSIX.1-2008.

       renameat2() is Linux-eigen.

OPMERKINGEN

   Glibc-opmerkingen
       Op  oudere  kernels  waar  renameat()   niet beschikbaar is, valt de glibc omwikkelfunctie
       terug op het gebruik van rename().  Als oudpad and nieuwpad relative  padnamen  zijn,  dan
       zal  glibc  padnamen construeren gebaseerd op  de symbolische koppelingen in /proc/self/fd
       die overeenkomen met de oudmapbi en nieuwmapbi argumenten.

BUGS

       Op NFS bestandsystemen kun je niet aannemen dat als een handeling  mislukte,  het  bestand
       niet  hernoemd  werd.  Als  de  server  de  hernoem-handeling  doet en gecrasht dan zal de
       herverstuurde RPC die afgehandeld zal worden  als  de  server  het  weer  doet,  een  fout
       veroorzaken.  Van  toepassing  wordt  verwacht  hiermee  om  te  gaan.  Zie  link(2)  voor
       gelijksoortige problemen.

ZIE OOK

       mv(1), rename(1), chmod(2), link(2), symlink(2), unlink(2), path_resolution(7), symlink(7)

VERTALING

       De  Nederlandse  vertaling  van  deze  handleiding  is  geschreven   door   Jos   Boersema
       <joshb@xs4all.nl>,  Mario  Blättermann  <mario.blaettermann@gmail.com>  en  Luc Castermans
       <luc.castermans@gmail.com>

       Deze vertaling is vrije documentatie;  lees  de  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  of later over de Copyright-voorwaarden. Er is
       geen AANSPRAKELIJKHEID.

       Indien U fouten in de vertaling van deze handleiding zou vinden,  stuur  een  e-mail  naar
       ⟨debian-l10n-dutch@lists.debian.org⟩.