Advertisement
Guest User

Untitled

a guest
Nov 11th, 2018
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. //user_ops.c
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include "user_ops.h"
  6. #include <sys/types.h>
  7.  
  8. size_t strcpy_safe(char* dst, const char* src, size_t size) {
  9.         char *d = dst;
  10.         const char *s = src;
  11.         size_t n = size;
  12.  
  13.         /* Copy as many bytes as will fit */
  14.         if (n != 0 && --n != 0) {
  15.                 do {
  16.                         if ((*d++ = *s++) == 0)
  17.                                 break;
  18.                 } while (--n != 0);
  19.         }
  20.  
  21.         /* Not enough room in dst, add NUL and traverse rest of src */
  22.         if (n == 0) {
  23.                 if (size != 0)
  24.                         *d = '\0';                /* NUL-terminate dst */
  25.                 while (*s++)
  26.                         ;
  27.         }
  28.  
  29.         return(s - src - 1);        /* count does not include NUL */
  30.    
  31. }
  32.  
  33. userdata* create_user(const char* name, const char* password, int ispremium) {
  34.   userdata *user;
  35.  
  36.   if(name == NULL || password == NULL) return NULL;
  37.   if (strlen(name) > 15 || strlen(password) > 15) {return NULL;}
  38.  
  39.   user = calloc(1,sizeof(userdata));
  40.   user->ispremium = ispremium;
  41.  
  42.   strcpy_safe(user->username,name, 16);
  43.   strcpy_safe(user->password,password, 16);
  44.  
  45.   return user;
  46. }
  47.  
  48. //user_ops.h
  49.  
  50. typedef struct userdata {
  51.   char username[16];
  52.   int ispremium;
  53.   char password[16];
  54. } userdata;
  55.  
  56. size_t strcpy_safe(char* dst, const char* src, size_t size);
  57. userdata* create_user(const char* name, const char* password, int ispremium);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement