Provided by: manpages-nl-dev_4.13-4_all bug

NAAM

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

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);

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

       renameat():
           Vanaf glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Vóór glibc 2.10:
               _ATFILE_SOURCE
       renameat2():
           _GNU_SOURCE

BESCHRIJVING

       rename()  hernoemt  een  bestand, het naar andere directories 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, shmem, 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  \mer  is
              niets mis met het hoe-dan-ook doen van de hernoeming\m 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 sticky bit (S_ISVTX) gezet  en  het  proces  zijn
              effectieve  UID  is noch dat van de gebruiker, noch van het UID van het bestand dat
              verwijderd zal worden, nog dat van de  map  die  het  bevat,  of  nieuwpad  is  een
              bestaand  bestand  en  de  map  die  het  bevat heeft het sticky bit gezet maar het
              geldige UID van het proces is niet dat van root nog het UID  van  het  bestand  dat
              verplaatst zal worden nog dat van de map die het bevat, of het bestandssysteem waar
              padnaam op zit ondersteund de gevraagde hernoem-soort 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  oudmapbi of 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 in kernel 2.6.16; bibliotheek ondersteuning werd
       toegevoegd aan glibc in versie 2.4.

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

VOLDOET AAN

       rename(): 4.3BSD, C89, 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)

COLOFON

       Deze  pagina  is  onderdeel  van  release  5.10  van  het  Linux  man-pages-project.   Een
       beschrijving  van  het  project, informatie over het melden van bugs en de nieuwste versie
       van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

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 ⟨⟩.