Ruby 3.4.5p51 (2025-07-16 revision 20cda200d3ce092571d0b5d342dadca69636cb0f)
|
Routines to manipulate encodings of pathnames. More...
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/encoding/encoding.h"
#include "ruby/internal/value.h"
Go to the source code of this file.
Functions | |
char * | rb_enc_path_next (const char *path, const char *end, rb_encoding *enc) |
Returns a path component directly adjacent to the passed pointer. | |
char * | rb_enc_path_skip_prefix (const char *path, const char *end, rb_encoding *enc) |
Seeks for non-prefix part of a pathname. | |
char * | rb_enc_path_last_separator (const char *path, const char *end, rb_encoding *enc) |
Returns the last path component. | |
char * | rb_enc_path_end (const char *path, const char *end, rb_encoding *enc) |
This just returns the passed end basically. | |
const char * | ruby_enc_find_basename (const char *name, long *baselen, long *alllen, rb_encoding *enc) |
Our own encoding-aware version of basename(3). | |
const char * | ruby_enc_find_extname (const char *name, long *len, rb_encoding *enc) |
Our own encoding-aware version of extname. |
Routines to manipulate encodings of pathnames.
Definition in file pathname.h.
char * rb_enc_path_end | ( | const char * | path, |
const char * | end, | ||
rb_encoding * | enc ) |
This just returns the passed end basically.
It makes difference in case the passed string ends with tons of path separators like the following:
[in] | path | Where to start scanning. |
[in] | end | End of the path string. |
[in] | enc | Encoding of the string. |
char * rb_enc_path_last_separator | ( | const char * | path, |
const char * | end, | ||
rb_encoding * | enc ) |
Returns the last path component.
[in] | path | Where to start scanning. |
[in] | end | End of the path string. |
[in] | enc | Encoding of the string. |
char * rb_enc_path_next | ( | const char * | path, |
const char * | end, | ||
rb_encoding * | enc ) |
Returns a path component directly adjacent to the passed pointer.
[in] | path | Where to start scanning. |
[in] | end | End of the path string. |
[in] | enc | Encoding of the string. |
char * rb_enc_path_skip_prefix | ( | const char * | path, |
const char * | end, | ||
rb_encoding * | enc ) |
Seeks for non-prefix part of a pathname.
This can be a no-op when the OS has no such concept like a path prefix. But there are OSes where path prefixes do exist.
[in] | path | Where to start scanning. |
[in] | end | End of the path string. |
[in] | enc | Encoding of the string. |
const char * ruby_enc_find_basename | ( | const char * | name, |
long * | baselen, | ||
long * | alllen, | ||
rb_encoding * | enc ) |
Our own encoding-aware version of basename(3).
Normally, this function returns the last path component of the given name. However in case the passed name ends with a path separator, it returns the name of the directory, not the last (empty) component. Also if the passed name is a root directory, it returns that root directory. Note however that Windows filesystem have drive letters, which this function does not return.
[in] | name | Target path. |
[out] | baselen | Return buffer. |
[in,out] | alllen | Number of bytes of name. |
[enc] | enc Encoding of name. |
const char * ruby_enc_find_extname | ( | const char * | name, |
long * | len, | ||
rb_encoding * | enc ) |
Our own encoding-aware version of extname.
This function first applies rb_enc_path_last_separator() to the passed name and only concerns its return value (ignores any parent directories). This function returns complicated results:
[in] | name | Target path. |
[in,out] | len | Number of bytes of name. |
[in] | enc | Encoding of name. |