int unique_nonzero_ints()

in OpsWorks/sample-cookbooks/cpulimit-ruby/files/default/cpulimit-master/src/process_iterator_apple.c [18:42]


int unique_nonzero_ints(int* arr_in, int len_in, int* arr_out) {
	int* source = arr_in;
	if (arr_out == NULL) return -1;
	if (arr_in == arr_out) {
		source = malloc(sizeof(int)*len_in);
		memcpy(source, arr_in, sizeof(int)*len_in);
		memset(arr_out, -1, sizeof(int)*len_in);
	}
	int len_out = 0;
        int i, j;
	for (i=0; i<len_in; i++) {
		int found = 0;
		if (source[i] == 0) continue;
		for (j=0; !found && j<len_out; j++) {
			found = (source[i] == arr_out[j]) ? 1 : 0;
		}
		if (!found) {
			arr_out[len_out++] = source[i];
		}
	}
	if (arr_in == arr_out) {
		free(source);
	}
	return len_out-1;
}