@@ -174,7 +174,7 @@ The result is a real value representing the elapsed time in seconds, measured fr
174174
175175### Syntax
176176
177- ` delta_t = ` [[ stdlib_system(module): elapsed (subroutine )]] ` (process) `
177+ ` delta_t = ` [[ stdlib_system(module): elapsed (interface )]] ` (process) `
178178
179179### Arguments
180180
@@ -212,7 +212,7 @@ in case of process hang or delay.
212212
213213### Syntax
214214
215- ` call ` [[ stdlib_system(module): wait (subroutine )]] ` (process [, max_wait_time]) `
215+ ` call ` [[ stdlib_system(module): wait (interface )]] ` (process [, max_wait_time]) `
216216
217217### Arguments
218218
@@ -243,7 +243,7 @@ This is especially useful for monitoring asynchronous processes and retrieving t
243243
244244### Syntax
245245
246- ` call ` [[ stdlib_system(module): update (subroutine )]] ` (process) `
246+ ` call ` [[ stdlib_system(module): update (interface )]] ` (process) `
247247
248248### Arguments
249249
@@ -269,7 +269,7 @@ This interface is useful when a process needs to be forcefully stopped, for exam
269269
270270### Syntax
271271
272- ` call ` [[ stdlib_system(module): kill (subroutine )]] ` (process, success) `
272+ ` call ` [[ stdlib_system(module): kill (interface )]] ` (process, success) `
273273
274274### Arguments
275275
@@ -298,7 +298,7 @@ It ensures that the requested sleep duration is honored on both Windows and Unix
298298
299299### Syntax
300300
301- ` call ` [[ stdlib_system(module): sleep (subroutine )]] ` (millisec) `
301+ ` call ` [[ stdlib_system(module): sleep (interface )]] ` (millisec) `
302302
303303### Arguments
304304
@@ -324,7 +324,7 @@ This function is highly efficient and works during the compilation phase, avoidi
324324
325325### Syntax
326326
327- ` result = ` [[ stdlib_system(module): is_windows (function )]] ` () `
327+ ` result = ` [[ stdlib_system(module): is_windows (interface )]] ` () `
328328
329329### Return Value
330330
@@ -359,7 +359,7 @@ If the OS cannot be identified, the function returns `OS_UNKNOWN`.
359359
360360### Syntax
361361
362- ` os = [[stdlib_system(module):get_runtime_os(function)]]() `
362+ ` os = ` [[ stdlib_system(module): get_runtime_os (function)]] ` () `
363363
364364### Class
365365
@@ -396,7 +396,7 @@ This caching mechanism ensures negligible overhead for repeated calls, unlike `g
396396
397397### Syntax
398398
399- ` os = [[stdlib_system(module):OS_TYPE(function)]]() `
399+ ` os = ` [[ stdlib_system(module): OS_TYPE (function)]] ` () `
400400
401401### Class
402402
@@ -431,7 +431,7 @@ It is designed to work across multiple platforms. On Windows, paths with both fo
431431
432432### Syntax
433433
434- ` result = [[stdlib_system(module):is_directory(function)]](path) `
434+ ` result = ` [[ stdlib_system(module): is_directory (function)]] ` (path) `
435435
436436### Class
437437
@@ -471,7 +471,7 @@ It reads as an empty file. The null device's path varies by operating system:
471471
472472### Syntax
473473
474- ` path = [[stdlib_system(module):null_device(function)]]() `
474+ ` path = ` [[ stdlib_system(module): null_device (function)]] ` () `
475475
476476### Class
477477
@@ -506,7 +506,7 @@ The function provides an optional error-handling mechanism via the `state_type`
506506
507507### Syntax
508508
509- ` call [[stdlib_system(module):delete_file(subroutine)]] (path [, err]) `
509+ ` call ` [[ stdlib_system(module): delete_file (subroutine)]] ` (path [, err]) `
510510
511511### Class
512512Subroutine
@@ -532,3 +532,175 @@ The file is removed from the filesystem if the operation is successful. If the o
532532``` fortran
533533{!example/system/example_delete_file.f90!}
534534```
535+ 536+ ## ` join_path ` - Joins the provided paths according to the OS
537+ 538+ ### Status
539+ 540+ Experimental
541+ 542+ ### Description
543+ 544+ This interface joins the paths provided to it according to the platform specific path-separator.
545+ i.e ` \ ` for windows and ` / ` for others
546+ 547+ ### Syntax
548+ 549+ ` res = ` [[ stdlib_system(module): join_path (interface)]] ` (p1, p2) `
550+ 551+ ` res = ` [[ stdlib_system(module): join_path (interface)]] ` (p) `
552+ 553+ ### Class
554+ Pure function
555+ 556+ ### Arguments
557+ 558+ ` p1, p2 ` : Shall be a character string or ` type(string_type) ` . It is an ` intent(in) ` argument.
559+ or
560+ ` p ` : Shall be a list of character strings or list of ` type(string_type) ` . It is an ` intent(in) ` argument.
561+ 562+ ### Return values
563+ 564+ The resultant path, either a character string or ` type(string_type) ` .
565+ 566+ ## ` operator(/) `
567+ 568+ Alternative syntax to` join_path ` using an overloaded operator. Join two paths according to the platform specific path-separator.
569+ 570+ ### Status
571+ 572+ Experimental
573+ 574+ ### Syntax
575+ 576+ ` p = lval / rval `
577+ 578+ ### Class
579+ 580+ Pure function.
581+ 582+ ### Arguments
583+ 584+ ` lval ` : A character string or ` type(string_type) ` . It is an ` intent(in) ` argument.
585+ 586+ ` rval ` : A character string or ` type(string_type) ` . It is an ` intent(in) ` argument.
587+ 588+ ### Result value
589+ 590+ The result is an ` allocatable ` character string or ` type(string_type) `
591+ 592+ #### Example
593+ 594+ ``` fortran
595+ {!example/system/example_path_join.f90!}
596+ ```
597+ 598+ ## ` split_path ` - splits a path immediately following the last separator
599+ 600+ ### Status
601+ 602+ Experimental
603+ 604+ ### Description
605+ 606+ This subroutine splits a path immediately following the last separator after removing the trailing separators
607+ splitting it into most of the times a directory and a file name.
608+ 609+ ### Syntax
610+ 611+ ` call ` [[ stdlib_system(module): split_path (interface)]] ` (p, head, tail) `
612+ 613+ ### Class
614+ Subroutine
615+ 616+ ### Arguments
617+ 618+ ` p ` : A character string or ` type(string_type) ` containing the path to be split. It is an ` intent(in) ` argument.
619+ ` head ` : The first part of the path. Either a character string or ` type(string_type) ` . It is an ` intent(out) ` argument.
620+ ` tail ` : The rest part of the path. Either a character string or ` type(string_type) ` . It is an ` intent(out) ` argument.
621+ 622+ ### Behavior
623+ 624+ - If ` p ` is empty, ` head ` is set to ` . ` and ` tail ` is left empty.
625+ - If ` p ` consists entirely of path-separators, ` head ` is set to the path-separator and ` tail ` is left empty.
626+ - ` head ` ends with a path-separator if and only if ` p ` appears to be a root directory or child of one.
627+ 628+ ### Return values
629+ 630+ The splitted path. ` head ` and ` tail ` .
631+ 632+ ### Example
633+ 634+ ``` fortran
635+ {!example/system/example_path_split_path.f90!}
636+ ```
637+ 638+ ## ` base_name ` - The last part of a path
639+ 640+ ### Status
641+ 642+ Experimental
643+ 644+ ### Description
645+ 646+ This function returns the last part of a path after removing trailing path separators.
647+ 648+ ### Syntax
649+ 650+ ` res = ` [[ stdlib_system(module): base_name (interface)]] ` (p) `
651+ 652+ ### Class
653+ Function
654+ 655+ ### Arguments
656+ 657+ ` p ` : the path, a character string or ` type(string_type) ` . It is an ` intent(in) ` argument.
658+ 659+ ### Behavior
660+ 661+ - The ` tail ` of ` [[stdlib_system(module):split_path(interface)]] ` is exactly what is returned. Same Behavior.
662+ 663+ ### Return values
664+ 665+ A character string or ` type(string_type) ` .
666+ 667+ ### Example
668+ 669+ ``` fortran
670+ {!example/system/example_path_base_name.f90!}
671+ ```
672+ 673+ ## ` dir_name ` - Everything except the last part of the path
674+ 675+ ### Status
676+ 677+ Experimental
678+ 679+ ### Description
680+ 681+ This function returns everything except the last part of a path.
682+ 683+ ### Syntax
684+ 685+ ` res = ` [[ stdlib_system(module): dir_name (interface)]] ` (p) `
686+ 687+ ### Class
688+ Function
689+ 690+ ### Arguments
691+ 692+ ` p ` : the path, a character string or ` type(string_type) ` . It is an ` intent(in) ` argument.
693+ 694+ ### Behavior
695+ 696+ - The ` head ` of ` [[stdlib_system(module):split_path(interface)]] ` is exactly what is returned. Same Behavior.
697+ 698+ ### Return values
699+ 700+ A character string or ` type(string_type) ` .
701+ 702+ ### Example
703+ 704+ ``` fortran
705+ {!example/system/example_path_dir_name.f90!}
706+ ```
0 commit comments