File: Local.pmod

package info (click to toggle)
pike8.0 8.0.1956-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 60,580 kB
  • sloc: ansic: 259,734; xml: 36,320; makefile: 3,748; sh: 1,713; cpp: 1,349; awk: 1,036; lisp: 655; javascript: 468; asm: 242; objc: 240; pascal: 157; sed: 34
file content (75 lines) | stat: -rw-r--r-- 2,052 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#pike __REAL_VERSION__

//! @[Local] gives a local module namespace used for locally
//! installed pike modules.
//!
//! Modules are searched for in the directory @tt{pike_modules@} which
//! can be located in the user's home directory or profile directory,
//! or in any of the system directories @tt{/opt/share,
//! /usr/local/share, /opt@} or @tt{/usr/local/@}.
//!
//! The user's home directory is determined by examining the
//! environment variable HOME, and if that fails the environment
//! variable USERPROFILE.
//!
//! If the environment variable PIKE_LOCAL_PATH is set, the paths
//! specified there will be searched first.
//!
//! @example
//!  If the user has installed the pike module @tt{Mine.pmod@} in the
//!  directory @tt{$HOME/pike_modules@}.  it can be accessed as
//!  @tt{Local.Mine@}.
//!
//! @seealso
//!   @[Local.add_path()], @[Local.remove_path()]

inherit __joinnode;

protected array(string) local_path;

protected void create()
{
  ::create(({}));

  // FIXME $prefix/pike_modules
  // FIXME All this should be controllable from .pikerc, when such a file is implemented...

  add_path("/usr/local/pike_modules");
  add_path("/opt/pike_modules");
  add_path("/opt/share/pike_modules");
  add_path("/usr/local/share/pike_modules");

  string tmp;
  if( (tmp=[string]getenv("HOME")) || (tmp=[string]getenv("USERPROFILE")) ) {
    tmp = (tmp[-1]=='/'?tmp:tmp+"/")+"pike_modules/";
    add_path(tmp);
  }

  if(tmp = [string]getenv("PIKE_LOCAL_PATH") ) {
    array to_add=reverse(tmp/":"); // preserve order
    add_path( to_add[*] ); 
  }
}

//! @decl int(0..1) add_path(string path)
//!
//! This function prepends @[path] to the @[Local] module
//! searchpath.
//!
//! @param path
//!   The path to the directory to be added.
//!
//! @returns
//!   Returns 1 on success, otherwise 0.

//! This function removes @[path] from the @[Local] module
//! searchpath. If @[path] is not in the search path, this is
//! a noop.
//!
//! @param path
//!   The path to be removed.
//!
void remove_path(string path)
{
  rem_path(path);
}