| 933 | } |
| 934 | |
| 935 | int poptSaveLongLong(long long * arg, unsigned int argInfo, long long aLongLong) |
| 936 | { |
| 937 | /* XXX Check alignment, may fail on funky platforms. */ |
| 938 | if (arg == NULL || (((unsigned long)arg) & (ALIGNOF(*arg)-1))) |
| 939 | return POPT_ERROR_NULLARG; |
| 940 | |
| 941 | if (aLongLong != 0 && LF_ISSET(RANDOM)) { |
| 942 | aLongLong = poptRandomValue(aLongLong); |
| 943 | if (aLongLong < 0) |
| 944 | return aLongLong; |
| 945 | } |
| 946 | if (LF_ISSET(NOT)) |
| 947 | aLongLong = ~aLongLong; |
| 948 | switch (LF_ISSET(LOGICALOPS)) { |
| 949 | case 0: |
| 950 | *arg = aLongLong; |
| 951 | break; |
| 952 | case POPT_ARGFLAG_OR: |
| 953 | *(unsigned long long *)arg |= (unsigned long long)aLongLong; |
| 954 | break; |
| 955 | case POPT_ARGFLAG_AND: |
| 956 | *(unsigned long long *)arg &= (unsigned long long)aLongLong; |
| 957 | break; |
| 958 | case POPT_ARGFLAG_XOR: |
| 959 | *(unsigned long long *)arg ^= (unsigned long long)aLongLong; |
| 960 | break; |
| 961 | default: |
| 962 | return POPT_ERROR_BADOPERATION; |
| 963 | break; |
| 964 | } |
| 965 | return 0; |
| 966 | } |
| 967 | |
| 968 | int poptSaveLong(long * arg, unsigned int argInfo, long aLong) |
| 969 | { |
no test coverage detected