50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/* pwd - print working directory	Author: Norbert Schlenker */
 | 
						|
 | 
						|
/*
 | 
						|
 * pwd - print working directory
 | 
						|
 *   Syntax:	pwd
 | 
						|
 *   Flags:	None.
 | 
						|
 *   Author:	Norbert Schlenker
 | 
						|
 *   Copyright:	None.  Released to the public domain.
 | 
						|
 *   Reference:	IEEE P1003.2 Section 4.50 (draft 10)
 | 
						|
 *   Bugs:	No internationalization support; all messages are in English.
 | 
						|
 */
 | 
						|
 | 
						|
/* Force visible Posix names */
 | 
						|
#ifndef _POSIX_SOURCE
 | 
						|
#define _POSIX_SOURCE 1
 | 
						|
#endif
 | 
						|
 | 
						|
/* External interfaces */
 | 
						|
#include <sys/types.h>
 | 
						|
#include <limits.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
/* Magic numbers suggested or required by Posix specification */
 | 
						|
#define SUCCESS	0		/* exit code in case of success */
 | 
						|
#define FAILURE 1		/*                   or failure */
 | 
						|
 | 
						|
_PROTOTYPE(int main, (void));
 | 
						|
 | 
						|
static char dir[PATH_MAX + 1];
 | 
						|
static char *errmsg = "pwd: cannot search some directory on the path\n";
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
  char *p;
 | 
						|
  size_t n;
 | 
						|
 | 
						|
  p = getcwd(dir, PATH_MAX);
 | 
						|
  if (p == NULL) {
 | 
						|
	write(STDERR_FILENO, errmsg, strlen(errmsg));
 | 
						|
	exit(FAILURE);
 | 
						|
  }
 | 
						|
  n = strlen(p);
 | 
						|
  p[n] = '\n';
 | 
						|
  if (write(STDOUT_FILENO, p, n + 1) != n + 1) 	exit(FAILURE);
 | 
						|
  return(SUCCESS);
 | 
						|
}
 |