Robert Vincent Krakora wrote: > #ifndef _LINUX_CTYPE_H > #define _LINUX_CTYPE_H > > /* > * NOTE! This ctype does not handle EOF like the standard C > * library is required to. > */ > > #define _U 0x01 /* upper */ > #define _L 0x02 /* lower */ > #define _D 0x04 /* digit */ > #define _C 0x08 /* cntrl */ > #define _P 0x10 /* punct */ > #define _S 0x20 /* white space (space/lf/tab) */ > #define _X 0x40 /* hex digit */ > #define _SP 0x80 /* hard space (0x20) */ > > extern unsigned char _ctype[]; > > #define __ismask(x) (_ctype[(int)(unsigned char)(x)]) > > #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) > #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) > #define iscntrl(c) ((__ismask(c)&(_C)) != 0) > #define isdigit(c) ((__ismask(c)&(_D)) != 0) > #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) > #define islower(c) ((__ismask(c)&(_L)) != 0) > #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) > #define ispunct(c) ((__ismask(c)&(_P)) != 0) > #define isspace(c) ((__ismask(c)&(_S)) != 0) > #define isupper(c) ((__ismask(c)&(_U)) != 0) > #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) > > #define isascii(c) (((unsigned char)(c))<=0x7f) > #define toascii(c) (((unsigned char)(c))&0x7f) > > static inline unsigned char __tolower(unsigned char c) > { > if (isupper(c)) > c -= 'A'-'a'; > return c; > } > > static inline unsigned char __toupper(unsigned char c) > { > if (islower(c)) > c -= 'a'-'A'; > return c; > } > > #define tolower(c) __tolower(c) > #define toupper(c) __toupper(c) > > #endif > > /* Works only for digits and letters, but small and fast */ > #define TOLOWER(x) ((x) | 0x20) > > /** > * strict_strtoul - convert a string to an unsigned long > * @cp: The start of the string > * @endp: A pointer to the end of the parsed string will be placed here > * @base: The number base to use > */ > unsigned long strict_strtoul(const char *cp, unsigned int base, unsigned > long *val) > { > unsigned long result = 0,value; > > if (!base) { > base = 10; > if (*cp == '0') { > base = 8; > cp++; > if ((TOLOWER(*cp) == 'x') && isxdigit(cp[1])) { > cp++; > base = 16; > } > } > } else if (base == 16) { > if (cp[0] == '0' && TOLOWER(cp[1]) == 'x') > cp += 2; > } > while (isxdigit(*cp) && > (value = isdigit(*cp) ? *cp-'0' : TOLOWER(*cp)-'a'+10) < base) { > result = result*base + value; > cp++; > } > > if (val) > *val = result; > > return result; > } > > > soosho wrote: > >> Hi All, >> >> Thanks a lot for the mailing list. >> >> I've just downloaded an Alsa package and confronted the following error >> during the compilation. >> >> Could anybody help, please? >> >> Or at least does anybody know exactly, what is the meaning of the >> following error message, plz? >> >> Any help would be appreciated! >> >> Regards, >> >> Soosho >> >> ========================================================================================== >> [EMAIL PROTECTED] alsa-driver-1.0.17]# make >> make dep >> make[1]: Entering directory `/home/soosho/tmp/alsa/alsa-driver-1.0.17' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/ioctl32' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/ioctl32' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/oss' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/oss' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/seq' >> make[4]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/seq/oss' >> make[4]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/seq/oss' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore/seq' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/acore' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/i2c' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/i2c/l3' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/i2c/l3' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/i2c/other' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/i2c/other' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/i2c' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/mpu401' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/mpu401' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/opl3' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/opl3' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/opl4' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/opl4' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/pcsp' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/pcsp' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/vx' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers/vx' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/drivers' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/ad1816a' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/ad1816a' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/ad1848' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/ad1848' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/cs423x' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/cs423x' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/es1688' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/es1688' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/gus' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/gus' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/msnd' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/msnd' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/opti9xx' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/opti9xx' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/sb' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/sb' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/wavefront' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa/wavefront' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/isa' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/synth' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/synth/emux' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/synth/emux' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/synth' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ac97' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ac97' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ali5451' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ali5451' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/asihpi' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/asihpi' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/au88x0' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/au88x0' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/aw2' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/aw2' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ca0106' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ca0106' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/cs46xx' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/cs46xx' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/cs5535audio' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/cs5535audio' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/echoaudio' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/echoaudio' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/emu10k1' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/emu10k1' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/hda' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/hda' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ice1712' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ice1712' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/korg1212' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/korg1212' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/mixart' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/mixart' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/nm256' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/nm256' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/oxygen' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/oxygen' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/pcxhr' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/pcxhr' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/pdplus' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/pdplus' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/riptide' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/riptide' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/rme9652' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/rme9652' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/trident' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/trident' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/vx222' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/vx222' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ymfpci' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci/ymfpci' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pci' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/codecs' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/codecs' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/core' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/core' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/fabrics' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/fabrics' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/soundbus' >> make[4]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/soundbus/i2sbus' >> make[4]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/soundbus/i2sbus' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa/soundbus' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/aoa' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/at32' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/at32' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/at91' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/at91' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/au1x' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/au1x' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/codecs' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/codecs' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/davinci' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/davinci' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/fsl' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/fsl' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/omap' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/omap' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/pxa' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/pxa' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/s3c24xx' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/s3c24xx' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/sh' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/sh' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/usb' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/usb/caiaq' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/usb/caiaq' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/usb/usx2y' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/usb/usx2y' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/usb' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pcmcia' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pcmcia/pdaudiocf' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pcmcia/pdaudiocf' >> make[3]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pcmcia/vx' >> make[3]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pcmcia/vx' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/pcmcia' >> make[2]: Entering directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/misc' >> make[2]: Leaving directory >> `/home/soosho/tmp/alsa/alsa-driver-1.0.17/misc' >> make[1]: Leaving directory `/home/soosho/tmp/alsa/alsa-driver-1.0.17' >> make -C /lib/modules/2.6.24.4-desktop-1mnb/source >> SUBDIRS=/home/soosho/tmp/alsa/alsa-driver-1.0.17 CPP="gcc -E" CC="gcc" >> modules >> make[1]: Entering directory `/usr/src/linux-2.6.24.4-desktop-1mnb' >> CC [M] /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/soc-dapm.o >> In file included from >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/soc-dapm.c:2: >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c: >> In function ‘dapm_pop_time_store’: >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c:834: >> error: implicit declaration of function ‘strict_strtoul’ >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c: >> At top level: >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c:1043: >> warning: ‘snd_soc_dapm_connect_input’ is deprecated (declared at >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c:1040) >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c:1043: >> warning: ‘snd_soc_dapm_connect_input’ is deprecated (declared at >> /home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/../alsa-kernel/soc/soc-dapm.c:1040) >> make[3]: *** [/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc/soc-dapm.o] >> Error 1 >> make[2]: *** [/home/soosho/tmp/alsa/alsa-driver-1.0.17/soc] Error 2 >> make[1]: *** [_module_/home/soosho/tmp/alsa/alsa-driver-1.0.17] Error 2 >> make[1]: Leaving directory `/usr/src/linux-2.6.24.4-desktop-1mnb' >> make: *** [compile] Error 2 >> [EMAIL PROTECTED] alsa-driver-1.0.17]# >> >> > > >
-- Rob Krakora Software Engineer MessageNet Systems 101 East Carmel Dr. Suite 105 Carmel, IN 46032 (317)566-1677 Ext. 206 (317)663-0808 Fax ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Alsa-user mailing list Alsa-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/alsa-user