| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | ! Copyright (C) 2008 Doug Coleman. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2009-09-17 23:07:21 -04:00
										 |  |  | USING: alien alien.c-types alien.data alien.strings | 
					
						
							| 
									
										
										
										
											2013-10-21 16:58:33 -04:00
										 |  |  | alien.syntax kernel layouts libc sequences system unix | 
					
						
							| 
									
										
										
										
											2011-11-02 14:23:41 -04:00
										 |  |  | environment io.encodings.utf8 unix.utilities vocabs | 
					
						
							| 
									
										
										
										
											2010-01-20 23:42:07 -05:00
										 |  |  | combinators alien.accessors unix.ffi ;
 | 
					
						
							| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | IN: environment.unix | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HOOK: environ os ( -- void* )
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 01:03:58 -05:00
										 |  |  | M: unix environ ( -- void* ) &: environ ;
 | 
					
						
							| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: unix os-env ( key -- value ) getenv ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-29 14:38:37 -04:00
										 |  |  | M: unix set-os-env ( value key -- )
 | 
					
						
							|  |  |  |     over [ | 
					
						
							|  |  |  |         swap 1 setenv io-error | 
					
						
							|  |  |  |     ] [ | 
					
						
							|  |  |  |         nip unset-os-env | 
					
						
							|  |  |  |     ] if ;
 | 
					
						
							| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | M: unix unset-os-env ( key -- ) unsetenv io-error ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: unix (os-envs) ( -- seq )
 | 
					
						
							| 
									
										
										
										
											2010-10-25 14:22:50 -04:00
										 |  |  |     environ void* deref utf8 alien>strings ;
 | 
					
						
							| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : set-void* ( value alien -- ) 0 set-alien-cell ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-25 21:37:50 -04:00
										 |  |  | M: unix set-os-envs-pointer ( malloc -- ) environ set-void* ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | M: unix (set-os-envs) ( seq -- )
 | 
					
						
							| 
									
										
										
										
											2012-08-25 21:37:50 -04:00
										 |  |  |     utf8 strings>alien malloc-byte-array set-os-envs-pointer ;
 | 
					
						
							| 
									
										
										
										
											2008-10-18 22:20:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-15 18:56:37 -05:00
										 |  |  | os macosx? [ "environment.unix.macosx" require ] when
 |