AUSAM/source/S/chown.c
#
/*
* chown lname file ...
*/
#include <local-system>
#include <passwd.h>
struct inode
{
int i_dev;
int i_number;
int i_mode;
int i_uid;
char i_nlinks;
char i_size0;
int i_size1;
int i_addr[8];
long i_atime;
long i_mtime;
};
struct pwent pe;
main( c , v )
register c;
char *v[];
{
register unsigned uid;
register sflg = 0;
struct inode i[1];
if ( c < 3 )
{
prints( 2, "chown [-s] name|uid file ...\n" );
exit( 1 );
}
v++;
if( v[0][0] == '-' && v[0][1] == 's' )
{
sflg++;
v++;
c--;
}
pe.pw_strings[LNAME] = *v;
if ( getpwuid( &pe, 0, 0 ) < 0 )
{
if( v[0][0] >= '0' && v[0][0] <= '9' )
uid = atoi(*v);
else
{
prints( 2, "who?\n" );
exit( 1 );
}
}
else
uid = pe.pw_uid;
c--; v++;
while ( --c )
{
if( sflg)
{
stat(*v, i);
}
if( chown ( *v , uid ) < 0 )
{
perror( *v );
}
else if( sflg)
smdate( *v, i->i_mtime );
v++;
}
return( 0 );
}