The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
Google UNIX.COM


High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Passing global variable to a function which is called by another function sars Shell Programming and Scripting 4 06-30-2008 08:39 AM
Log function Ernst Shell Programming and Scripting 17 03-19-2007 08:31 AM
Function within function (Recurance) chassis UNIX for Dummies Questions & Answers 2 09-19-2006 06:32 AM
function mpang_ Shell Programming and Scripting 1 07-25-2006 09:16 PM
How to convert the "select" function into a "poll" function rbolante High Level Programming 1 07-10-2001 07:49 AM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 07-22-2008
Registered User
 

Join Date: Dec 2007
Posts: 41
Regarding cuserid() function in 'C'

Hi,

I am doing a (Make gapw), where I have the following line of code at Line No.96 :-

96 DISCARD strcpy(user , (char*) cuserid((char*)0));

But I am not able to compile due to the only 1 following error :-

gapw.c: In function `main':
gapw.c:96: warning: cast to pointer from integer of different size

I included #include <stdlib.h> and #include <libgen.h>, in the file, but still I am not able to compile.

I think, there is a problem with the usage of cuserid() function.

Request you to please help me to debug the error.

Thanks in advance.

Best Regards,
Marconi

Last edited by marconi; 07-22-2008 at 12:59 PM.
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 07-22-2008
Registered User
 

Join Date: Oct 2007
Location: USA
Posts: 542
What platform are you on?
cuserid() will be removed some time in the future so it is recommended to use its replacements like getpwuid() or getlogin().
Reply With Quote
  #3 (permalink)  
Old 07-22-2008
Registered User
 

Join Date: Dec 2007
Posts: 41
Hi,

I am currently on OS :- Red Hat Linux Version 3.0. The script I am running is a HP Tru64 Unix compatible script
which I am trying to run on the Linux Version 3.0.

Instead of :- DISCARD strcpy(user , (char*) cuserid((char*)0));

I used each of the following as per your suggestion :-

DISCARD strcpy(user, (char*) getlogin((char*)0));

or

DISCARD strcpy(user , (char*) getpwuid(getuid((char*)0)));

but still its showing me the following errors :-

$ make gapw
cc -c -o gapw.o gapw.c
gapw.c: In function `main':
gapw.c:101: error: too many arguments to function `getlogin'
make: *** [gapw.o] Error 1

or

$ make gapw
cc -c -o gapw.o gapw.c
gapw.c: In function `main':
gapw.c:102: error: too many arguments to function `getuid'
gapw.c:102: warning: cast to pointer from integer of different size
make: *** [gapw.o] Error 1


Request you to pls give ur inputs.

Regards,
Marconi.

Last edited by marconi; 07-22-2008 at 01:06 PM.
Reply With Quote
  #4 (permalink)  
Old 07-23-2008
Moderator
 

Join Date: Dec 2003
Location: /dev/florida
Posts: 955
Are you including the required headers for getlogin() and/or getpwuid()?

getlogin() requires <unistd.h>
getpwuid() requires <sys/types.h> and <pwd.h>
Reply With Quote
  #5 (permalink)  
Old 07-23-2008
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 3,868
corrected syntax for getlogin
Code:
/* top of file */
#include <unistd.h>
/* ..... some of your code here down to line 101 */
strcpy(user , getlogin() );
Reply With Quote
  #6 (permalink)  
Old 07-24-2008
Registered User
 

Join Date: Dec 2007
Posts: 41
Hi,

I had already added the 3 header files as suggested by murphy as follows :-

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <limits.h>
#include "ifile.h"
#include <libgen.h>
#include <stdlib.h>
#include <pwd.h>


The earlier code had cuserid() as follows :-

1) DISCARD strcpy(user , (char*) cuserid((char*)0));

As cuserid() is not a valid function in linux, I can use either getlogin() or getpwuid()

As per Jim's suggestion, if I put the code like this :-

2) DISCARD strcpy(user, getlogin());

I don't have any errors, as follows :-


$ gcc gapw.c
/tmp/cc6K9ODh.o(.text+0x21d): In function `main':
: undefined reference to `getprofilestring'
/tmp/cc6K9ODh.o(.text+0x2ec): In function `main':
: undefined reference to `getprofilestring'
collect2: ld returned 1 exit status

$ make clean
rm -f getkey.o ifile.o bitt.o getkey getapp \
putkey getall getappkeys gapw filetime filetime.o gapw.o bitt \
libExtRelan.so envi envi.o

$ make gapw
cc -c -o gapw.o gapw.c
cc -c -o ifile.o ifile.c
cc -o gapw gapw.o ifile.o -lc_r
/usr/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
make: *** [gapw] Error 1

$


But, I think the logic will be changed when we compare the code at 1) and 2), above.

Also, when I do a gcc gapw.c, I still get the above errors, though there are no errors
when I do a make gapw.


Request you to please give your inputs.

Thanks a lot in advance.

Best Regards,
Marconi.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Tags
solaris

Thread Tools
Display Modes




All times are GMT -7. The time now is 08:53 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0