.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved .TH "STRCMP" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual" .\" strcmp .SH NAME strcmp \- compare two strings .SH SYNOPSIS .LP \fB#include .br .sp int strcmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB); .br \fP .SH DESCRIPTION .LP The \fIstrcmp\fP() function shall compare the string pointed to by \fIs1\fP to the string pointed to by \fIs2\fP. .LP The sign of a non-zero return value shall be determined by the sign of the difference between the values of the first pair of bytes (both interpreted as type \fBunsigned char\fP) that differ in the strings being compared. .SH RETURN VALUE .LP Upon completion, \fIstrcmp\fP() shall return an integer greater than, equal to, or less than 0, if the string pointed to by \fIs1\fP is greater than, equal to, or less than the string pointed to by \fIs2\fP, respectively. .SH ERRORS .LP No errors are defined. .LP \fIThe following sections are informative.\fP .SH EXAMPLES .SS Checking a Password Entry .LP The following example compares the information read from standard input to the value of the name of the user entry. If the \fIstrcmp\fP() function returns 0 (indicating a match), a further check will be made to see if the user entered the proper old password. The \fIcrypt\fP() function shall encrypt the old password entered by the user, using the value of the encrypted password in the \fBpasswd\fP structure as the salt. If this value matches the value of the encrypted \fBpasswd\fP in the structure, the entered password \fIoldpasswd\fP is the correct user's password. Finally, the program encrypts the new password so that it can store the information in the \fBpasswd\fP structure. .sp .RS .nf \fB#include #include #include \&... int valid_change; struct passwd *p; char user[100]; char oldpasswd[100]; char newpasswd[100]; char savepasswd[100]; \&... if (strcmp(p->pw_name, user) == 0) { if (strcmp(p->pw_passwd, crypt(oldpasswd, p->pw_passwd)) == 0) { strcpy(savepasswd, crypt(newpasswd, user)); p->pw_passwd = savepasswd; valid_change = 1; } else { fprintf(stderr, "Old password is not valid\\n"); } } \&... \fP .fi .RE .SH APPLICATION USAGE .LP None. .SH RATIONALE .LP None. .SH FUTURE DIRECTIONS .LP None. .SH SEE ALSO .LP \fIstrncmp\fP() , the Base Definitions volume of IEEE\ Std\ 1003.1-2001, \fI\fP .SH COPYRIGHT Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .