| 966 | } |
| 967 | |
| 968 | int poptSaveLong(long * arg, unsigned int argInfo, long aLong) |
| 969 | { |
| 970 | /* XXX Check alignment, may fail on funky platforms. */ |
| 971 | if (arg == NULL || (((unsigned long)arg) & (ALIGNOF(*arg)-1))) |
| 972 | return POPT_ERROR_NULLARG; |
| 973 | |
| 974 | if (aLong != 0 && LF_ISSET(RANDOM)) { |
| 975 | aLong = (long)poptRandomValue(aLong); |
| 976 | if (aLong < 0) |
| 977 | return aLong; |
| 978 | } |
| 979 | if (LF_ISSET(NOT)) |
| 980 | aLong = ~aLong; |
| 981 | switch (LF_ISSET(LOGICALOPS)) { |
| 982 | case 0: *arg = aLong; break; |
| 983 | case POPT_ARGFLAG_OR: *(unsigned long *)arg |= (unsigned long)aLong; break; |
| 984 | case POPT_ARGFLAG_AND: *(unsigned long *)arg &= (unsigned long)aLong; break; |
| 985 | case POPT_ARGFLAG_XOR: *(unsigned long *)arg ^= (unsigned long)aLong; break; |
| 986 | default: |
| 987 | return POPT_ERROR_BADOPERATION; |
| 988 | break; |
| 989 | } |
| 990 | return 0; |
| 991 | } |
| 992 | |
| 993 | int poptSaveInt(int * arg, unsigned int argInfo, long aLong) |
| 994 | { |
no test coverage detected